A tool for mining commits from Git repositories to automatically extract code change pattern instances and features using AST analysis.
Coming is a Java-based tool for mining commits from Git repositories to automatically extract instances of code change patterns and compute features using abstract syntax tree (AST) analysis. It helps researchers and developers analyze software evolution, identify common change patterns, and study automated program repair by processing commit diffs at the AST level.
Software engineering researchers, PhD students, and developers interested in empirical studies of code changes, program repair, or software evolution analysis.
Coming provides a precise, AST-based approach to commit analysis with multiple analysis modes (pattern mining, frequency, repairability, feature extraction) and flexible filtering, making it a powerful tool for research on code changes beyond simple line-based diffs.
A tool for mining commits from Git repositories and diffs to automatically extract code change pattern instances and features with ast analysis
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Analyzes commits at the abstract syntax tree level, enabling precise identification of code change patterns like insertions of binary operators or if-return blocks, as demonstrated in the pattern mining examples.
Supports four distinct modes—pattern instance mining, change frequency analysis, repairability assessment, and code feature extraction—catering to diverse research needs such as studying software evolution or automated program repair.
Processes Git repositories, file pairs, or patch directories, and allows filtering commits by message keywords, hunk count, or test presence, enabling targeted empirical studies as outlined in the README.
Provides extension points and documentation for custom analyzers, making it adaptable for specialized scenarios like defining complex XML patterns for change detection.
Requires manual Maven installation, Java 17 setup, and GitHub token configuration in settings.xml, making initial deployment non-trivial compared to plug-and-play tools.
Primarily designed for Java AST analysis; extending to other languages demands significant customization, limiting its utility in polyglot projects without additional development.
Command-line interface and XML-based pattern definitions are geared towards researchers, lacking user-friendly GUIs or simplified workflows that developers might expect.
Repairability analysis results vary with diff algorithms, and the README advises using a specific commit for exact reproduction, indicating sensitivity to underlying changes and potential instability.