Library to analyze and collect metrics on source code
Перейти к файлу
Luni-4 acabe8914a Get sha1 commit from tree-sitter-cpp crate for mozcpp
Instead of hard-coding the sha1 of the commit associated to
the tree-sitter-cpp grammar used to generate the mozcpp grammar,
retrieve automatically it from the tree-sitter-cpp crate version
present in Cargo.toml
2021-03-31 00:49:22 +02:00
.github dependabot: Look for updates for local grammars (#521) 2021-03-09 15:46:47 +01:00
data Init repo 2019-07-16 16:07:02 +02:00
enums enums: Do not export macros 2021-03-30 22:00:53 +02:00
generate-grammars Get sha1 commit from tree-sitter-cpp crate for mozcpp 2021-03-31 00:49:22 +02:00
rust-code-analysis-book Add a 'How to cite rust-code-analysis' section in the repo's README and the docs main page (#557) 2021-03-17 12:23:14 +01:00
rust-code-analysis-cli Bump walkdir from 2.3.1 to 2.3.2 (#590) 2021-03-29 09:56:22 +02:00
rust-code-analysis-web Bump pretty_assertions from 0.6.1 to 0.7.1 (#519) 2021-03-09 11:06:11 +01:00
src enums: Use the Into trait generated by the From trait 2021-03-30 22:00:53 +02:00
tests Remove c parser and use the c++ one instead 2019-12-17 16:19:29 +01:00
tree-sitter-ccomment Pin tree-sitter lib and grammars (#595) 2021-03-30 16:33:01 +02:00
tree-sitter-mozcpp Pin tree-sitter lib and grammars (#595) 2021-03-30 16:33:01 +02:00
tree-sitter-mozjs Pin tree-sitter lib and grammars (#595) 2021-03-30 16:33:01 +02:00
tree-sitter-preproc Pin tree-sitter lib and grammars (#595) 2021-03-30 16:33:01 +02:00
.gitignore Init repo 2019-07-16 16:07:02 +02:00
.pre-commit-config.yaml Update pre-commit repositories 2021-01-06 11:44:14 +01:00
.taskcluster.yml Update script name to check grammars in CI 2021-03-30 15:41:40 +02:00
Cargo.lock Update Cargo.lock 2021-03-30 15:41:40 +02:00
Cargo.toml Pin tree-sitter lib and grammars (#595) 2021-03-30 16:33:01 +02:00
README.md Add a 'How to cite rust-code-analysis' section in the repo's README and the docs main page (#557) 2021-03-17 12:23:14 +01:00
build.rs Clean up build.rs file 2021-03-30 15:41:40 +02:00
check-grammar-crate.py Clean up and clarify script to check grammars 2021-03-30 15:41:40 +02:00
check-grammars-crates.sh Update script used to check if there are grammars updates 2021-03-30 15:41:40 +02:00
recreate-grammars.sh Update script to recreate grammars 2021-03-30 15:41:40 +02:00

README.md

rust-code-analysis

Task Status codecov

rust-code-analysis is a Rust library to analyze and extract information from source code written in many different programming languages. It is based on a parser generator tool and an incremental parsing library called Tree Sitter.

A command line tool called rust-code-analysis-cli is provided to interact with the API of the library in an easy way.

This tool can be used to:

  • Call rust-code-analysis API
  • Print nodes and metrics information
  • Export metrics in different formats

In addition, we provide a rust-code-analysis-web tool to use the library through a REST API.

Usage

rust-code-analysis supports many types of programming languages and computes a great variety of metrics. You can find up to date documentation at Documentation.

On the Commands page, there is a list of commands that can be run to get information about metrics, nodes, and other general data provided by this software.

Contributing

If you want to contribute to the development of this software or you are just interested in building rust-code-analysis, have a look at the Developers Guide.

How to cite rust-code-analysis

@article{ARDITO2020100635,
    title = {rust-code-analysis: A Rust library to analyze and extract maintainability information from source codes},
    journal = {SoftwareX},
    volume = {12},
    pages = {100635},
    year = {2020},
    issn = {2352-7110},
    doi = {https://doi.org/10.1016/j.softx.2020.100635},
    url = {https://www.sciencedirect.com/science/article/pii/S2352711020303484},
    author = {Luca Ardito and Luca Barbato and Marco Castelluccio and Riccardo Coppola and Calixte Denizet and Sylvestre Ledru and Michele Valsesia},
    keywords = {Algorithm, Software metrics, Software maintainability, Software quality},
    abstract = {The literature proposes many software metrics for evaluating the source code non-functional properties, such as its complexity and maintainability. The literature also proposes several tools to compute those properties on source codes developed with many different software languages. However, the Rust language emergence has not been paired by the communitys effort in developing parsers and tools able to compute metrics for the Rust source code. Also, metrics tools often fall short in providing immediate means of comparing maintainability metrics between different algorithms or coding languages. We hence introduce rust-code-analysis, a Rust library that allows the extraction of a set of eleven maintainability metrics for ten different languages, including Rust. rust-code-analysis, through the Abstract Syntax Tree (AST) of a source file, allows the inspection of the code structure, analyzing source code metrics at different levels of granularity, and finding code syntax errors before compiling time. The tool also offers a command-line interface that allows exporting the results in different formats. The possibility of analyzing source codes written in different programming languages enables simple and systematic comparisons between the metrics produced from different empirical and large-scale analysis sources.}
}

Licenses

  • Mozilla-defined grammars are released under the MIT license.

  • rust-code-analysis, rust-code-analysis-cli and rust-code-analysis-web are released under the Mozilla Public License v2.0.