Emerge (or emerge-viz) is an interactive code analysis tool to gather insights about source code structure, metrics, dependencies, and complexity of software projects. You can scan the source code of a project, calculate metric results and statistics, generate an interactive web app with graph structures (e.g. a dependency graph or a filesystem graph), and export the results in some file formats. Emerge currently has parsing support for the following languages: C, C++, Groovy, Java, JavaScript, TypeScript, Kotlin, ObjC, Ruby, Swift, Python, and Go. The structure, coloring, and clustering is calculated and based on the idea of combining a force-directed graph simulation and Louvain modularity. emerge is mainly written in Python 3 and is tested on macOS, Linux, and modern web browsers (i.e., the latest Safari, Chrome, Firefox, and Edge).
Features
- File scan support for the following languages: C, C++, Groovy, Java, JavaScript, TypeScript, Kotlin, ObjC, Ruby, Swift, Python
- Basic entity scan/extraction (e.g. classes) for the following languages: Groovy, Java, Kotlin, Swift
- Implementation of the following software metrics: SLOC, Whitespace Complexity (impl. by A. Tornhill), Number of Methods, Fan-In/Fan-Out, Modularity (Louvain)
- Experimental implementation of additional git-based metrics (SLOC, Whitespace Complexity, Change Coupling)
- Logging support with configurable log levels
- Configuration support based on YAML syntax to configure multiple/specific analyses