Cross Language Clone Analysis Team 2 March 3, 2011.

40
Presentation 12 Cross Language Clone Analysis Team 2 March 3, 2011

Transcript of Cross Language Clone Analysis Team 2 March 3, 2011.

Page 1: Cross Language Clone Analysis Team 2 March 3, 2011.

Presentation 12Cross Language Clone Analysis

Team 2March 3, 2011

Page 2: Cross Language Clone Analysis Team 2 March 3, 2011.

• Parsing/CodeDOM• Clone Analysis• GUI Implementation• Documentation• Testing• Current Status• Path Forward

Agenda

2

Page 3: Cross Language Clone Analysis Team 2 March 3, 2011.

Allen Tucker Patricia Bradford Greg Rodgers Ashley Chafin

Our Team

3

Page 4: Cross Language Clone Analysis Team 2 March 3, 2011.

Parsing & CodeDOMParsing and conversion to CodeDOM

4

Page 5: Cross Language Clone Analysis Team 2 March 3, 2011.

CodeDOM Status

Accomplishments

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 Yes

Java and C# conversion into CodeDOM to support cross language detections are now equal (see green cells left)

Source code and statement line number associations now in place

5

Page 6: Cross Language Clone Analysis Team 2 March 3, 2011.

Clone AnalysisThe Algorithm

6

Page 7: Cross Language Clone Analysis Team 2 March 3, 2011.

Breadth First

7

CodeNamespace

CodeTypeDeclaration

CodeMemberMethod◦ CodeParameterDeclarationExpression

Page 8: Cross Language Clone Analysis Team 2 March 3, 2011.

Deep Dive

8

Tokenize Analyze

Expressions 9/26 0/26

Statements 9/15 0/26

Other 7/24 0/24

Others Include:CodeMemberFieldCodeMemberMethodCodeMemberPropertyCodeNamespaceCodeTypeDeclarationCodeTypeMemberCodeTypeParameter

Others Include:CodeCatchClauseCodeMemberEventCodeCommentCodeDirectiveCodeEntryPointMethodCodeTypeDelegate

Page 9: Cross Language Clone Analysis Team 2 March 3, 2011.

Analysis Changes

9

Namespace

Compile Unit

Namespace

Type Declaration

Member Method

Statement

Expression Expression

Type Declaration

Member Method

Statement

Expression Expression

Tokenize()

Compare() Compare()

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P}

$T$P(){$T$P} $T$P(){$T$P}

Compare()

Compare()

Compare()

Page 10: Cross Language Clone Analysis Team 2 March 3, 2011.

10

Next Iteration At least 75% Complete with Deep Dive

Tokenization Analysis

Add properties settings to the CloneDetection Interface

Setting lower bound on token length Setting bounds on confidence levels

Page 11: Cross Language Clone Analysis Team 2 March 3, 2011.

GUI ImplementationSketches / Demo

11

Page 12: Cross Language Clone Analysis Team 2 March 3, 2011.

Source File Properties

12

Page 13: Cross Language Clone Analysis Team 2 March 3, 2011.

Namespace Properties

13

Page 14: Cross Language Clone Analysis Team 2 March 3, 2011.

File Type Properties

14

Page 15: Cross Language Clone Analysis Team 2 March 3, 2011.

File Group Properties

15

Page 16: Cross Language Clone Analysis Team 2 March 3, 2011.

Density Graph

16

Page 17: Cross Language Clone Analysis Team 2 March 3, 2011.

Clone View

17

Page 18: Cross Language Clone Analysis Team 2 March 3, 2011.

DocumentationDocumentation Status

18

Page 19: Cross Language Clone Analysis Team 2 March 3, 2011.

Documentation History

19

Page 20: Cross Language Clone Analysis Team 2 March 3, 2011.

TestingWhite Box and Black Box Testing

20

Page 21: Cross Language Clone Analysis Team 2 March 3, 2011.

White Box Testing: ◦ Unit Testing

Black Box Testing:◦ Production Rule Testing◦ Stress Testing◦ Functional Testing

Testing Our Project

21

Page 22: Cross Language Clone Analysis Team 2 March 3, 2011.

Console Project…bypasses GUI◦ Parses source and builds CodeDOM◦ No analysis

◦ Targets JDK1.6 Microsoft Visual Studio 9.0

Stress Testing

22

Page 23: Cross Language Clone Analysis Team 2 March 3, 2011.

Stress Testing (Good)

23

Page 24: Cross Language Clone Analysis Team 2 March 3, 2011.

Stress Testing (Not So Good)

24

Page 25: Cross Language Clone Analysis Team 2 March 3, 2011.

Current Test Count: 33

Added test code to cover◦ Clone analysis◦ Some stress

Project Unit Test Results

Page 26: Cross Language Clone Analysis Team 2 March 3, 2011.

Project Metrics (Release 0.01)

Page 27: Cross Language Clone Analysis Team 2 March 3, 2011.

Project Metrics (Release 0.02)

Page 28: Cross Language Clone Analysis Team 2 March 3, 2011.

Project Metrics History

28

Page 29: Cross Language Clone Analysis Team 2 March 3, 2011.

We are using our www.code.google.com to track our bugs.

Bug Tracking

29

Page 30: Cross Language Clone Analysis Team 2 March 3, 2011.

Bug Tracking History

30

Page 31: Cross Language Clone Analysis Team 2 March 3, 2011.

Current StatusWhere we currently stand

31

Page 32: Cross Language Clone Analysis Team 2 March 3, 2011.

32

Below is the status of the tasks for this past iteration:◦ Parsing/CodeDOM

C++ parsing – 15% C# and Java are both equal for CodeDOM

◦ Clone Analysis Tokenization & analysis – 75%

◦ GUI Project management – 100% Displaying source code – 100% Sketches for visual design – 100%

Where we stand….

Page 33: Cross Language Clone Analysis Team 2 March 3, 2011.

33

◦ Documentation – 96% User Stories, Use Cases, UML Models, Sketches Functional Tests Update schedule

◦ Testing Unit tests – 90% Execute functional tests – 100%

Where we stand….

Page 34: Cross Language Clone Analysis Team 2 March 3, 2011.

As of March 3, 2011 SLOC:

◦ CS666_Client = 5190 lines◦ CS666_Core = 2988 lines◦ CS666_Console = 287 lines◦ CS666_CppParser = 484 lines◦ CS666_CsParser = 3459 lines◦ CS666_JavaParser = 3502 lines◦ CS666_LanguageSupport = 84 lines◦ CS666_UnitTests = 944 lines

Total = 16938 lines (including unit tests)

SLOC For Our Project

34

- Used lcounter.exe to count SLOC

Page 35: Cross Language Clone Analysis Team 2 March 3, 2011.

SLOC History

35

- Used lcounter.exe to count SLOC

Page 36: Cross Language Clone Analysis Team 2 March 3, 2011.

SLOC History

36

- Used lcounter.exe to count SLOC

Page 37: Cross Language Clone Analysis Team 2 March 3, 2011.

Path ForwardPath Forward for the next iteration

37

Page 38: Cross Language Clone Analysis Team 2 March 3, 2011.

38

Schedule

Page 39: Cross Language Clone Analysis Team 2 March 3, 2011.

39

Below is a list of the tasks for our next iteration:◦ Parsing/CodeDOM

C++ parsing Java, C#, C++ conversion to CodeDOM

◦ Clone Analysis Add property settings to clone analysis

◦ GUI Project management Clone analysis Sketches for visual design

Next Iteration

Page 40: Cross Language Clone Analysis Team 2 March 3, 2011.

40

◦ Documentation User Stories, Use Cases, UML Models, Sketches Functional Tests Update schedule

◦ Testing Unit tests Execute functional tests Record bugs/issues found

Next Iteration