cross language clone analysis team 2 november 10, 2010
DESCRIPTION
Allen Tucker Patricia Bradford Greg Rodgers Brian Bentley Ashley Chafin 3TRANSCRIPT
![Page 1: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/1.jpg)
Presentation 6Cross Language Clone Analysis
Team 2November 10, 2010
![Page 2: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/2.jpg)
• Current Tasks• Parsing & CodeDOM• Clone Analysis• Unit Testing• Team Collaboration• Path Forward
Agenda
2
![Page 3: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/3.jpg)
Allen Tucker Patricia Bradford Greg Rodgers Brian Bentley Ashley Chafin
Our Team
3
![Page 4: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/4.jpg)
Current TasksWhat we are tackling…
4
![Page 5: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/5.jpg)
Current tasks created for the first user story “Source Code Load & Translate”:◦ Load & parse C#, Java, C++ source code.◦ Translate the parsed C#, Java, C++ source code
to CodeDOM.◦ Associate the CodeDOM to the original source
code. Current tasks created for the second user
story “Source Code Analyze”:
Current Tasks (Review)
5
![Page 6: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/6.jpg)
UML Model – Load & Parse
6
![Page 7: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/7.jpg)
UML Model – Translate
7
![Page 8: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/8.jpg)
UML Model – Associate
8
![Page 9: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/9.jpg)
Parsing & CodeDOMGOLD Parsing Populating CodeDOM
9
![Page 10: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/10.jpg)
Task Understanding Three Step Process• Step 1 Code Translation
• Step 2 Clone Detection
• Step 3 Visualization
Source Files Translator Common
Model
Common Model Inspector Detected
Clones
Detected Clones UI Clone
Visualization
10
![Page 11: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/11.jpg)
Grammar Updates Currently the grammars we have for the
Gold parser are out dated.
Current Gold Grammars◦ C# version 2.0◦ Java version 1.4
Current available software versions◦ C# version 4.0◦ Java version 6
11
![Page 12: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/12.jpg)
Grammars for C# and Java are very complex and require a lot of work to build.
Antler and Gold Parser grammars use completely different syntax.
Positive note: Other development not halted by use of older grammars.
Grammar Update Issues
12
![Page 13: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/13.jpg)
What’s in CodeDOM (Java Code)
13
![Page 14: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/14.jpg)
Since there are so many production rules, we came up with the following bookkeeping:
A spreadsheet of the compiled grammar table (for each language) with each production rule indexed.◦ This spreadsheet covers:
various aspects of language what we have/have not handled from the parser what we have/have not implemented into CodeDOM percentage complete
Our Grammar Bookkeeping
14
![Page 15: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/15.jpg)
Our Grammar Bookkeeping
15
![Page 16: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/16.jpg)
Parsing Handlers’ Status:◦ C# = 52% complete◦ Java = 100% complete
CodeDOM Translation Status:◦ We currently do not believe we can give an
accurate measure of our completeness on this. It is a learning process, and we are working hard to complete it.
◦ We are working on the CodeDOM translation for Java currently. (We will demo)
Parsing & CodeDOM Status
16
![Page 17: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/17.jpg)
As of Nov 8, 2010 Sloc:
◦ CS666_Client = 510 lines◦ CS666_Core = 114 lines◦ CS666_CppParser = 117 lines◦ CS666_CsParser = 1678 lines◦ CS666_JavaParser = 3182 lines◦ CS666_LanguageSupport = 48 lines◦ CS666_Tests = 0 lines◦ CS666_UnitTests = lines
Total = 5649 lines (excluding unit tests)
SLOC For Our Project
17
![Page 18: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/18.jpg)
Clone AnalysisDr. Kraft’s Student’s Tool
18
![Page 19: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/19.jpg)
Detecting clones across multiple programming languages is on the cutting edge of research.
A preliminary version of this was done by Dr. Kraft and his students for C# and VB.◦ They compared the Mono C# parser (written in C#) to the
Mono VB parser (written in VB).◦ Publication:
Nicholas A. Kraft, Brandon W. Bonds, Randy K. Smith: Cross-language Clone Detection. SEKE 2008: 54-59
Clone Research
19
![Page 20: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/20.jpg)
Token sequence of CodeDOM graphs with Levenshtein distance◦ The Levenshtein distance between two sequences is
defined as the minimum number of edits needed to transform one sequence into the other
Performs Comparisons of code files CodeDOM tree is tokenized Based on Distances
◦ Percentage of matching tokens in a sequence
Dr. Kraft Approach
20
![Page 21: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/21.jpg)
Dr. Kraft Approach (cont)
21
![Page 22: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/22.jpg)
◦About 50% complete porting the analysis code
◦Dr. Kraft's code AST, codeDOM and Tokenization's are
woven tightly together
Porting Clone Analysis
22
![Page 23: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/23.jpg)
Only does file-to-file comparisons◦ Does not detect clones in same source file
Can only detect Type 1 and some Type 2 clones
Not very efficient (brute force)
Limitations
23
![Page 24: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/24.jpg)
Our User Interface
24
![Page 25: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/25.jpg)
Unit TestingNUnit
25
![Page 26: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/26.jpg)
White Box Testing: ◦ Unit Testing
Black Box Testing:◦ Production Rule Testing
Allows us to test the robustness of our engine because we can force rule production errors.
Regression Testing Automated
Two Types of Testing
26
![Page 27: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/27.jpg)
What Is NUnit? NUnit is a unit-testing framework for all .Net
languages. Initially ported from JUnit, the current production release, version 2.5, is the sixth major release of this xUnit based unit testing tool for Microsoft .NET. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features, for example custom attributes and other reflection related capabilities.
http://www.nunit.org/index.php
NUnit
27
![Page 28: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/28.jpg)
NUnit Example Code
28
![Page 29: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/29.jpg)
NUnit Example Code
29
![Page 30: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/30.jpg)
NUnit has approximately 180 unit test stubs created.
We are currently adding code to the unit test stubs that have functional code to support the test.
Unit testing demo
Unit Test Progress
30
![Page 31: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/31.jpg)
Team CollaborationTeam 2 & Team 3
31
![Page 32: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/32.jpg)
Team Collaboration Team 2 & Team 3 Both teams met Monday (11-8-10) after
class and performed the required Pair Programming.
Team 2◦ All project source code has been made available.◦ We are researching and working to update the
Java and C# grammars. Team 3
◦ Team 3 is working on C++ parsing. Looking into other parser, ELSA.
32
![Page 33: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/33.jpg)
Patricia’s StatusPatricia Bradford
33
![Page 34: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/34.jpg)
Beautiful baby boy, Joshua Aydan.
Patricia Had A….
34
![Page 35: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/35.jpg)
Path ForwardNext Iteration & Schedule
35
![Page 36: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/36.jpg)
Finalize Iteration 1Task (C++ to CodeDom) Continue Iteration 2 Task (Code Analysis) Continue Iteration 3 Task (Begin GUI)
Path Forward
36
![Page 37: Cross Language Clone Analysis Team 2 November 10, 2010](https://reader035.vdocuments.net/reader035/viewer/2022062412/5a4d1acc7f8b9ab05996fe20/html5/thumbnails/37.jpg)
Schedule
37