CSC/ECE 517 Fall 2009/wiki3 2 clone: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 4: Line 4:


"Software clones are segments of code that are similar according to some definition of similarity" —Ira Baxter, 2002[1].  As per this definition, two code snippets may be similar based on text, syntactic structure or semantics or if they follow same pattern.  Two code fragments are similar if their program text is similar.  Code snippets may not be semantically equivalent.  Such code snippets are also termed as redundant because if one changes then the other also needs to be changed.    However, some clones cannot be replaced by another for example, two code snippets may be identical at the textual level  but they refer to different variables declared in different places with the same name.  Example of such clones is shown below:
"Software clones are segments of code that are similar according to some definition of similarity" —Ira Baxter, 2002[1].  As per this definition, two code snippets may be similar based on text, syntactic structure or semantics or if they follow same pattern.  Two code fragments are similar if their program text is similar.  Code snippets may not be semantically equivalent.  Such code snippets are also termed as redundant because if one changes then the other also needs to be changed.    However, some clones cannot be replaced by another for example, two code snippets may be identical at the textual level  but they refer to different variables declared in different places with the same name.  Example of such clones is shown below:
Example of such clones is shown below:
int count = 0;
int methodA(string str)
{
        for (int i=0;i<str.length;i++)
count++;
}
int methodB(string str)
{
        int count=0;
        for (int i=0;i<str.length;i++)
count++;
}
In the above code snippet, count in methodA refers to global variable whereas in methodB it refers to local count variable.


== Clone Manipulation ==
== Clone Manipulation ==

Revision as of 01:34, 18 November 2009

Clone Detection and Clone Manipulation

Clone Detection

"Software clones are segments of code that are similar according to some definition of similarity" —Ira Baxter, 2002[1]. As per this definition, two code snippets may be similar based on text, syntactic structure or semantics or if they follow same pattern. Two code fragments are similar if their program text is similar. Code snippets may not be semantically equivalent. Such code snippets are also termed as redundant because if one changes then the other also needs to be changed. However, some clones cannot be replaced by another for example, two code snippets may be identical at the textual level but they refer to different variables declared in different places with the same name. Example of such clones is shown below:

Example of such clones is shown below: int count = 0; int methodA(string str) {

       for (int i=0;i<str.length;i++)

count++; } int methodB(string str) {

       int count=0;
       for (int i=0;i<str.length;i++)

count++; }

In the above code snippet, count in methodA refers to global variable whereas in methodB it refers to local count variable.

Clone Manipulation

Clone Detection Tools

Comparing With Refactoring

Conclusion

See Also

References

1. http://drops.dagstuhl.de/opus/volltexte/2007/962/pdf/06301.KoschkeRainer.962.pdf