Bridge The Gap Between Analysis And Ide

Both IDE and analysis tools work on top of source code. Both work with a model of source code, but these models differ as IDE and analysis tool have different requierments and needs. Also, a main challenge is synchronization between IDE and analysis tools. Hence, analysis tools are often implemented as separate applications, or, when integrated into the IDE, do not share their model with the IDE.

Other than an IDE, that usually works locally on a limited part of the source code, analysis tools often take the entire system (or at least on property of the entire system) into account. For example a text based tool might want to access the comment of all elements in the system. Or a clustering algorithm must take all associations between all classes into account.

Todays analysis tools assume that the underlying source code never changes, however in the context of in IDE this is not given. Analysis tools often work with intermediate data, for example tools based on FCA or LSI have to maintain a global index, which need a mathematically challenging update on each small code change.

Analysis tools often introduce new properties, new associations and even new first-class entities to the code model. For example a tool that computes cyclomatic complexity for all methods, or a tool that computes dependencies between packages, or a tool that detects duplications and models them as first-class entity. First, these results must be stored in the model, and second, they have to comunicated to other tools, for example to a generic visualization tool.

The last two challenges are addressed partly in Moose, using a model-driven approach with a meta-described code model. However, most of them are still open, in particular the synchronization between code changes in the IDE the model of analysis tools. Also, when integrating analysis tools into an IDE, why shouldn't these tools not themselves be allowed to change the underlying code?

-- AdrianKuhn


Last edited May 14, 2007
Return to WelcomeVisitors