static-analysis

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

静态分析

Static Analysis

适用场景

Applicable Scenarios

  • 提交前需要对代码进行静态分析,发现潜在缺陷。
  • 汽车、医疗等行业需要 MISRA-C 2012 合规检查。
  • 需要使用 cppcheck、clang-tidy 或 GCC
    -fanalyzer
    进行代码质量审查。
  • 需要对静态分析结果按严重级别分组查看摘要。
  • Need to perform static analysis on code before submission to detect potential defects.
  • Industries such as automotive and medical require MISRA-C 2012 compliance checks.
  • Need to use cppcheck, clang-tidy, or GCC
    -fanalyzer
    for code quality reviews.
  • Need to view summaries of static analysis results grouped by severity level.

必要输入

Necessary Inputs

  • 源码目录路径。
  • 至少一个可用的静态分析工具(cppcheck、clang-tidy 或 GCC 12+)。
  • 可选的
    compile_commands.json
    路径(提升 clang-tidy 准确性)。
  • 可选的严重级别过滤和 MISRA 检查开关。
  • Source code directory path.
  • At least one available static analysis tool (cppcheck, clang-tidy, or GCC 12+).
  • Optional
    compile_commands.json
    path (improves clang-tidy accuracy).
  • Optional severity level filtering and MISRA check toggle.

自动探测

Auto Detection

  • --detect
    模式检测 cppcheck、clang-tidy 和 arm-none-eabi-gcc 的可用性和版本。
  • GCC
    -fanalyzer
    需要 GCC 12+,脚本会检查版本号。
  • 自动搜索工作区中的
    compile_commands.json
  • The
    --detect
    mode detects the availability and versions of cppcheck, clang-tidy, and arm-none-eabi-gcc.
  • GCC
    -fanalyzer
    requires GCC 12+, and the script will check the version number.
  • Automatically searches for
    compile_commands.json
    in the workspace.

执行步骤

Execution Steps

  1. 先阅读 references/usage.md,确认本次使用哪个分析工具。
  2. 若不确定工具是否可用,先运行 scripts/static_analyzer.py
    --detect
    模式。
  3. 使用
    --cppcheck --source <dir>
    运行 cppcheck 分析。
  4. 使用
    --clang-tidy --source <dir>
    运行 clang-tidy 分析。
  5. 使用
    --gcc-analyzer --source <files>
    运行 GCC analyzer 分析。
  6. 需要 MISRA 合规时,添加
    --misra
    参数启用 cppcheck MISRA addon。
  7. 阅读 references/misra-quick-ref.md 了解常见 MISRA 违规。
  1. First read references/usage.md to confirm which analysis tool to use this time.
  2. If unsure whether the tool is available, first run the
    --detect
    mode of scripts/static_analyzer.py.
  3. Run cppcheck analysis with
    --cppcheck --source <dir>
    .
  4. Run clang-tidy analysis with
    --clang-tidy --source <dir>
    .
  5. Run GCC analyzer analysis with
    --gcc-analyzer --source <files>
    .
  6. When MISRA compliance is required, add the
    --misra
    parameter to enable the cppcheck MISRA addon.
  7. Read references/misra-quick-ref.md to learn about common MISRA violations.

失败分流

Failure Handling

  • 当所有分析工具都不可用时,返回
    environment-missing
  • 当指定的源码目录不存在时,返回
    artifact-missing
  • compile_commands.json
    指定但无效时,返回
    project-config-error
  • 当分析工具运行异常退出时,返回
    target-response-abnormal
  • Returns
    environment-missing
    when all analysis tools are unavailable.
  • Returns
    artifact-missing
    when the specified source code directory does not exist.
  • Returns
    project-config-error
    when
    compile_commands.json
    is specified but invalid.
  • Returns
    target-response-abnormal
    when the analysis tool exits abnormally.

平台说明

Platform Notes

  • cppcheck 和 clang-tidy 在三大平台均可用,通过包管理器安装。
  • GCC
    -fanalyzer
    需要 GCC 12+,嵌入式交叉编译器版本可能较低。
  • 自带脚本使用 Python 标准库和 subprocess,跨平台兼容。
  • cppcheck and clang-tidy are available on all three major platforms and can be installed via package managers.
  • GCC
    -fanalyzer
    requires GCC 12+, and embedded cross-compiler versions may be lower.
  • The built-in script uses Python standard libraries and subprocess, making it cross-platform compatible.

输出约定

Output Conventions

  • 按严重级别(error、warning、style、information)分组输出发现。
  • 每条发现包含文件路径、行号、规则 ID 和描述。
  • --summary
    模式只输出统计数字。
  • MISRA 模式额外输出违反的规则编号。
  • Output findings grouped by severity level (error, warning, style, information).
  • Each finding includes file path, line number, rule ID, and description.
  • The
    --summary
    mode only outputs statistical figures.
  • MISRA mode additionally outputs the violated rule numbers.

交接关系

Handover Relationships

  • 当发现严重缺陷需要修复后重新构建时,交给对应的
    build-*
    skill。
  • 当需要了解代码内存影响时,交给
    memory-analysis
  • When critical defects are found and require fixes before rebuilding, hand over to the corresponding
    build-*
    skill.
  • When needing to understand the memory impact of the code, hand over to
    memory-analysis
    .