cross language clone analysis team 2 april 7, 2011
TRANSCRIPT
![Page 1: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/1.jpg)
Presentation 15Cross Language Clone Analysis
Team 2April 7, 2011
![Page 2: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/2.jpg)
• Parsing/CodeDOM• Clone Analysis• GUI Implementation• Testing• Current Status• Path Forward
Agenda
2
![Page 3: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/3.jpg)
Allen Tucker Patricia Bradford Greg Rodgers Ashley Chafin
Our Team
3
![Page 4: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/4.jpg)
Parsing & CodeDOMParsing and conversion to CodeDOM
4
![Page 5: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/5.jpg)
CodeDOM Status
Accomplishments
Java and C# conversion into CodeDOM to support cross language detections are equal (see teal cells left)
Local variable statement in place for Java.
Not much progress this iteration.
5
Language Element CodeDOM Java C# C++Source File CodeCompilationUnit Yes YesImports/Using CodeNamespaceImport Yes YesFormal Parameters CodeParameterDeclarationExpression Yes YesMethod Declaration CodeMemberMethod Yes YesInterface Declaration CodeTypeDeclaration Yes YesField Declaration CodeMemberField Yes YesEnumeration Declaration CodeTypeDeclaration Yes YesClass Declaration CodeTypeDeclaration Yes YesStruct Declaration CodeTypeDeclaration Yes YesConstructor Declaration CodeConstructor Yes YesLocal Variable Statement CodeStatement YesIf StatementWhile StatementIf Then StatementFor StatementForeach Statement
![Page 6: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/6.jpg)
Clone AnalysisI see ewe
6
![Page 7: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/7.jpg)
Clone Analysis
7
Code Base
CodeDOM Conversion
Use Gold Parser for conversion
Transformation
Transform the CodeDOM elements into a sequence of tokens
Processed Code
Clone Analysis
Run comparison algorithm on transformed code
Transformed Code
Clone Formatting
Clone pair/class locations of the transformed code are mapped to the original code base by line numbers and file location
Clone Match
0…*
0…*
![Page 8: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/8.jpg)
8
Current Status 100 % complete with
Tokenization Analysis Formatting
Making progress on Java into CodeDOM C# into CodeDOM
![Page 9: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/9.jpg)
9
Additions
Clone Match Clone Type
Type 1 - An exact copy Type 2 - A syntactically identical copy Type 3 - A copy with further modifications
Fixed a handful (<10) bugs
![Page 10: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/10.jpg)
Language Plugin Documentation
How do you build the model?
10
![Page 11: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/11.jpg)
11
Documentation
Tokenize Analyze
Expressions 25/25 25/25
Statements 14/14 14/14
Other 7/7 7/7
Total 46/46 46/46
How are we using CodeDOM as a common code representation?
![Page 12: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/12.jpg)
12
Documentation
CodeDOM ExpressionsCodeArgumentReferenceExpression
CodeDefaultValueExpression
CodeBinaryOperatorExpression
…
25
Java ExpressionsPreIncrementExpression
MultiplicativeExpression
ShiftExpression
…
80+
C# ExpressionsPreIncrementExpression
MultiplicativeExpression
ShiftExpression
…
80+
![Page 13: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/13.jpg)
GUI ImplementationSketches Old/New
13
![Page 14: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/14.jpg)
Source File Properties
14
![Page 15: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/15.jpg)
Namespace Properties
15
![Page 16: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/16.jpg)
File Type Properties
16
![Page 17: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/17.jpg)
File Group Properties
17
![Page 18: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/18.jpg)
Density Graph
18
Need to add legend
![Page 19: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/19.jpg)
Clone View
19
Need to implement grouping by other types.
Language/File group
![Page 20: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/20.jpg)
Preferences - UI
20
![Page 21: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/21.jpg)
Preferences - Detection
21
![Page 22: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/22.jpg)
GUI ImplementationDemo
22
![Page 23: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/23.jpg)
TestingWhite Box and Black Box Testing
23
![Page 24: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/24.jpg)
Project Unit Test Results
24
98/101 Unit Tests Currently Pass
Failed based on recent change to tokenization technique for Labels to accommodate java and c# codeDOM conversion.
![Page 25: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/25.jpg)
Project Metrics (Release 0.04)
25
![Page 26: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/26.jpg)
Project Metrics (Release 0.04)
26
![Page 27: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/27.jpg)
Path ForwardPath Forward for the next iteration
27
![Page 28: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/28.jpg)
28
Below is a list of the tasks for our next iteration:◦ Parsing/CodeDOM
Continue Java, C# conversion to CodeDOM◦ Clone Analysis
Look at Performance Improvements◦ GUI
Bug fixes /Enhancements Project Properties Page Preference Page Performance Checks/Enhancements
Next Iteration
![Page 29: Cross Language Clone Analysis Team 2 April 7, 2011](https://reader036.vdocuments.us/reader036/viewer/2022062519/56649ee05503460f94bf065d/html5/thumbnails/29.jpg)
29
◦ Documentation User Stories, Use Cases, UML Models, Sketches Functional Tests Update schedule Language Plugin Development
◦ Testing Unit tests Execute functional tests Record bugs/issues found
Next Iteration