The architecture of VisCad is depicted in the following figure. VisCad takes as input the clone detection results and the code-base of the subject system. The core is the central module that manages the interaction and sets up the various components for clone analysis. If you have result from the listed clone detectors or have clone data in RCF format, VisCad can load them with the help of built-in parsers. Otherwise, you need to convert the result file in VisCad input file format that can be load by VisCad. In response to the user's interaction, VisCad populates a number of graphical views and interfaces through which users can further interact and investigate code clones at different levels of abstraction.
The features available in VisCad are listed in the following table. Details about these features will be available soon.
Features Currently Supported Clone Detection Tools CCFinder, Simian, SimScan, Nicad, iClones Granularity of Clones Function, Block(Aritrary + Structural) Clone Relation Clone Pair, Clone Class Adaptability to Tools Easily adaptable to tools that report clones with source and line locations Visualizations Scatter plot, Treemap and Hierarchical Dependency Graph Source Code Viewer Display fragment or file, support syntax and difference highlighting Data Filtering Manual, metric based, textual similarity based, overlapping clone filtering Scalability Small. medium and large systems(e.g., Linux Kernel 188.8.131.52)
We are thankful to the members of the Software Research Lab at USASK for their valuable comments. In particular, Minhaz Fahim Zibran and Ripon Kumar Saha provide important feedback on early development of VisCad.
It would not have been possible without the support of the open source community. We want to point to the followings:
Piccolo (A Structured 2D Graphics Framework)
Jung (Java Universal Network/Graph Framework)
RSyntaxTextArea (A syntax highlighting text component for Java Swing)
InfoNode Docking Windows (Swing Based GUI Component )