I'm interested in Software Engineering, Compiler Design, and Machine learning, Data mining.
If two fragments of source code are identical or similar to each other and when a programmer copies and pastes a fragment of code, possibly with minor or even extensive edits, it is called code cloning. Code clones introduce difficulties in software maintenance and lead to bug propagation. For example, if there are many identical or nearly duplicated or copy-pasted code fragments in a software system and a bug is found in one code clone, it has to be detected everywhere and fixed. The presence of duplicated but identical bugs in many locations within a piece of software increases the difficulty of software maintenance. Software clones occur due to several reasons such as code reuse by copying pre-existing fragments, coding style, and repeated computation using duplicated functions with slight changes in variables or data structures used. If a code fragment is edited, it will have to be checked against all related code clones to see if they need to be modified as well. Removal, avoidance or refactoring of cloned code are other important issues in software maintenance. However, several research studies have demonstrated that removal or refactoring of cloned code is sometimes harmful.