With lightweight static analysis on nesting hierarchy, control and data flow.
For various downstream tasks in software&language engineering:
- Software architecture analysis
- Semantic code diff
- Semantic code merge
- Impact analysis on code change
- Co-change prediction at different granularity
- Support multi-language code, easy to extend
- Support cross-lang link, specific to framework
- Submodule architecture, flexible combination of downstream/high-level tasks
- Java (done): Eclipse JDT Parser
- XML (done): SAXParser
- Kotlin (doing): kotlinx
- Python (in plan)
- JavaScript (in plan)
Special thanks to Gumtree, which has a nice design for language-agnostic abstraction.
- Neo4j
- GraphViz dot file
-
Node
-
Edge