cross language clone analysis team 2 april 7, 2011

29
Presentation 15 Cross Language Clone Analysis Team 2 April 7, 2011

Upload: clifton-osborne

Post on 20-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cross Language Clone Analysis Team 2 April 7, 2011

Presentation 15Cross Language Clone Analysis

Team 2April 7, 2011

Page 2: Cross Language Clone Analysis Team 2 April 7, 2011

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

Agenda

2

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

Allen Tucker Patricia Bradford Greg Rodgers Ashley Chafin

Our Team

3

Page 4: Cross Language Clone Analysis Team 2 April 7, 2011

Parsing & CodeDOMParsing and conversion to CodeDOM

4

Page 5: Cross Language Clone Analysis Team 2 April 7, 2011

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

Clone AnalysisI see ewe

6

Page 7: Cross Language Clone Analysis Team 2 April 7, 2011

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

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

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

Language Plugin Documentation

How do you build the model?

10

Page 11: Cross Language Clone Analysis Team 2 April 7, 2011

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

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

GUI ImplementationSketches Old/New

13

Page 14: Cross Language Clone Analysis Team 2 April 7, 2011

Source File Properties

14

Page 15: Cross Language Clone Analysis Team 2 April 7, 2011

Namespace Properties

15

Page 16: Cross Language Clone Analysis Team 2 April 7, 2011

File Type Properties

16

Page 17: Cross Language Clone Analysis Team 2 April 7, 2011

File Group Properties

17

Page 18: Cross Language Clone Analysis Team 2 April 7, 2011

Density Graph

18

Need to add legend

Page 19: Cross Language Clone Analysis Team 2 April 7, 2011

Clone View

19

Need to implement grouping by other types.

Language/File group

Page 20: Cross Language Clone Analysis Team 2 April 7, 2011

Preferences - UI

20

Page 21: Cross Language Clone Analysis Team 2 April 7, 2011

Preferences - Detection

21

Page 22: Cross Language Clone Analysis Team 2 April 7, 2011

GUI ImplementationDemo

22

Page 23: Cross Language Clone Analysis Team 2 April 7, 2011

TestingWhite Box and Black Box Testing

23

Page 24: Cross Language Clone Analysis Team 2 April 7, 2011

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

Project Metrics (Release 0.04)

25

Page 26: Cross Language Clone Analysis Team 2 April 7, 2011

Project Metrics (Release 0.04)

26

Page 27: Cross Language Clone Analysis Team 2 April 7, 2011

Path ForwardPath Forward for the next iteration

27

Page 28: Cross Language Clone Analysis Team 2 April 7, 2011

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

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