1 / 17

Visualization of Clone Detection Results

Visualization of Clone Detection Results. Eclipse Technology Exchange Workshop OOPSLA 2006 Portland, Oregon. Robert Tairas. with Jeff Gray and Ira Baxter. Code Clones. A sequence of statements that are duplicated in multiple locations in a program. Source Code. Cloned Code. _____

gale
Télécharger la présentation

Visualization of Clone Detection Results

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visualization of Clone Detection Results Eclipse Technology Exchange Workshop OOPSLA 2006 Portland, Oregon Robert Tairas with Jeff Gray and Ira Baxter

  2. Code Clones • A sequence of statements that are duplicated in multiple locations in a program Source Code ClonedCode _____ _______ _________ ___ ______ ___ ______ ______ _____ ________ ___ _______________ ____ _______ ______ _________ _____ _______ ________ ___ _______________ _______ _____ _________ _______ ___ ______ ________ __________ _______ ____ _______ ________ ___ _______________ ____ ______ _________ _____ ____ ________ ____ __________ _______ ___ ________ ___ _______________ _____ ________ ___ _______________ ______ _______ ______ _______ _________ _______ ___ ________ ___ _____________ ________ ___ _______________

  3. Clones in Source Code • Copy-and-paste parts of code from one location to another • The copied code alreadyworks correctly • No time to be efficient • Research shows that5-10% of large scalecomputer programsare clones (Baxter, 98) Source Code _____ _______ _________ ___ ______ ___ ______ ______ _____ ________ ___ _______________ ____ _______ ______ _________ _____ _______ ________ ___ _______________ _______ _____ _________ _______ ___ ______ ________ __________ _______ ____ _______ ________ ___ _______________ ____ ______ _________ _____ ____ ________ ____ __________ _______ ___ ________ ___ _______________ _____ ________ ___ _______________ ______ _______ ______ _______ _________ _______ ___ ________ ___ _____________

  4. Supporting Tool: CloneDR • Commercial clone detection tool developed by Semantic Designs • Finds clones by examining the abstract syntax tree representation of a program • Java version freely available at:http://www.semanticdesigns.com/Products/Clone/register-download.html

  5. Supporting tool: AJDT Visualiser Plugin • Part of the AspectJ Development Tools (AJDT) project • AJDT Visualiser website: http://www.eclipse.org/ajdt/visualiser • An extension point to pass information: Bars: Implement IContentProvider Interface Stripes: Implement IMarkupProvider Interface Visualiser View

  6. === Tree Clone Tuple ==== Tuple with 7 clones, 3 parameters; similarity = 0.9873417721518988 #4 #10f577d0 #97986c0 Clone 1: 6 lines from Line 43 to 48 File: c:/temp/runtime-EclipseApplication/JHotDraw/src/org/jhotdraw/contrib/WindowMenu.java new AbstractCommand("Cascade", newEditor) { public void execute() { WindowMenu.this.desktop.cascadeFrames(); } public boolean isExecutable() { return super.isExecutable() && (WindowMenu.this.desktop.getAllFrames().length > 0); } } -------------------------------------------------------------------------------- #4 #10f577d0 #979d860 Clone 2: 6 lines from Line 51 to 56 File: c:/temp/runtime-EclipseApplication/JHotDraw/src/org/jhotdraw/contrib/WindowMenu.java new AbstractCommand("Tile", newEditor) { public void execute() { WindowMenu.this.desktop.tileFramesHorizontally(); } public boolean isExecutable() { return super.isExecutable() && (WindowMenu.this.desktop.getAllFrames().length > 0); } } -------------------------------------------------------------------------------- #4 #10f577d0 #9e77f40 Clone 3: 7 lines from Line 52 to 58 File: c:/temp/runtime-EclipseApplication/JHotDraw/src/org/jhotdraw/contrib/CTXWindowMenu.java new AbstractCommand("Cascade", newEditor) { public void execute() { CTXWindowMenu.this.desktop.cascadeFrames(); } public boolean isExecutable() { return super.isExecutable() && (CTXWindowMenu.this.desktop.getAllFrames().length > 0); } } … Clone Detection Results

  7. Process Clone Detection Results Plugin CloneDR Detection Info View Config Wizard • Initially, user is assisted by detection process configuration wizard. • CloneDR executes and generates a text file containing its results. These results are parsed by the plugin. • Detection statistics sent to information view and detected clones sent to both textual and graphical view (step 3). 1 3 2 Detected Clones View Results Text File Parser 3 3 Eclipse Platform Detected Clones View AJDT Visualiser Plugin

  8. Configuration Wizard • The detection of clones can run on all files or just on pre-selected files • The detection settings for CloneDR are also set in the wizard • Wizard generates a configuration file that will be used by CloneDR

  9. Detection Information • Statistical information about the clone detection procedure itself in addition to the configuration settings are displayed in the clone detection results information view.

  10. List of Clones • Clone information: • grouped by similarity • source file • starting line number • ending line number • Not new, Simian and SimScan plugins also provide similar reporting

  11. Visualiser View • Bars: Source files • Stripes (Kinds): Clones • Mouse over: • Length of clone • Other clones in the same clone group

  12. Visualiser View • Additional Options: • Display all bars containing the same clones as in the selected bar • Display all bars containing the selected clone • Open the file containing the selected clone • Open all files containing clones in the same clone group as the selected clone

  13. The Big Picture

  14. Case Study • Performed on open source applications • JavaGenes, scientific evolutionary software • JHotDraw, a GUI framework • Understanding the results • Clone group in the same class (JavaGenes)

  15. Case Study • Understanding the results (continued) • Ubitiquous clones (JHotDraw), methods that: • return a new Rectangle object • draw two ovals (including setting their colors) • setting the undo and redo flags for the drawing view

  16. Future Work • A more structured view of the source code files • For OO languages, classes could be displayed in UML-like form. • Demarcation of methods in bars representing source files • Displaying the borders of methods in the view can assist in determining which clones are method-level clones. • Tighter integration of CloneDR in Eclipse • Simplify and speed up the detection and visualization process. Eclipse CloneDR

  17. Thank you. Questions? • Visualization of Clone Detection Results: http://www.cis.uab.edu/tairasr/visual • Clone Detection Literature: http://www.cis.uab.edu/tairasr/clones/literature • SoftCom Laboratory: http://www.cis.uab.edu/softcom

More Related