# inc-analyzer **Repository Path**: rvsmart-porting/inc-analyzer ## Basic Information - **Project Name**: inc-analyzer - **Description**: 针对RISC-V架构优化的C/C++静态分析工具增量调度器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-30 - **Last Updated**: 2025-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IncAnalyzer `IncAnalyzer` is a C/C++ static analysis tools incremental scheduler. Support static analysis tools as follow: [CSA(Clang Static Analyzer)](https://clang-analyzer.llvm.org/), [Clang-Tidy](https://clang.llvm.org/extra/clang-tidy/), [CppCheck](https://cppcheck.sourceforge.io/). `IncAnalyzer` can incrementally schedule these tools, with all tools supporting file-level incremental scheduling, and CSA supporting function-level incremental scheduling. *IncAnalyzer* 是一个适用于 RISC-V 开发平台的 C/C++ 静态分析工具的增量分析框架,基于 [*Bear*](https://github.com/rizsotto/Bear) 和 [*Panda*](https://github.com/SQUARE-RG/panda) 实现。 *IncAnalyzer* 能够管控 C/C++ 项目开发过程中的 配置-构建-分析 全流程,并能否根据当前的项目变更信息,分析出可用于静态分析工具进行增量分析的增量信息(如修改的文件、受影响的代码行号,受影响的函数等)。 根据这些信息,可以实现静态分析工具的文件级/函数级的增量分析,并且筛选掉那些与本次变更无关的报告(目前仅支持对`Clang Static Analyzer`的文件级增量分析)。 ## 使用方法 使用 *IncAnalyzer* 对一个项目进行静态分析,需要确保该项目可以成功构建(或成功生成构建数据库)。 可以通过 *IncAnalyzer* 构建项目(目前仅支持 `GNU Make` 的自动构建),分析会在构建完成后自动开始: ```bash # Dependencies sudo apt-get install clang cmake bear 也可以使用 [Bear (Build EAR)](https://github.com/rizsotto/Bear) 工具从构建过程中记录下 [JSON 编译数据库](https://clang.llvm.org/docs/JSONCompilationDatabase.html)。然后将编译数据库传给 *IncAnalyzer*,它会对数据库中记录的文件进行分析: ```bash bear --output compile_commands.json -- make -j16 python IncAnalyzer.py --repo path/to/project -f compile_commands.json -o ice-bear-output -j 16 --inc file --analyzers csa --clang /path/to/LLVM-19.1.5-Linux/bin/clang ``` --- ## 参数说明 *IncAnalyzer* 的主要参数说明如下: - `--repo`:要分析的项目路径。 - `--build`:构建项目所用的命令。 - `--build-dir`:项目构建目录,默认为当前目录。 - `-f`:编译数据库(`compile_commands.json`)的路径。 - `-o`:分析结果输出目录。 - `-j`:并行分析使用的线程数。 - `--inc`:增量分析策略: - `noinc`:分析编译数据库中记录的所有文件; - `file`:仅分析对应预处理文件发生变化的源文件; - `func`:仅分析变更的代码及其影响范围(如 AST 节点、函数),并生成报告。 - `--analyzers`:指定使用的分析器,可选项包括 `[csa]`。 - `--clang`:用于分析的 clang 路径(CSA 属于 clang 组件)。 --- 分析结果将输出在结果目录中的 `csa`子文件夹中。