静态代码分析与验证
PC-lint Plus在测试开始前就能发现缺陷
静态分析是在不执行源代码的情况下对其进行检查,从而在缺陷产生之时就将其识别出来,而不是等到测试或集成阶段缺陷显现时才发现。对于受监管行业中的嵌入式C和C++开发而言,从项目一开始就持续运行静态分析,可以防止缺陷类别在代码库中不断积累,并减少在认证前需要解决的问题数量。
静态分析的作用
静态分析工具会系统地遍历源代码,应用一组规则来识别仅靠测试难以甚至无法发现的问题。与动态测试不同,其结果不会因测试输入或运行时条件而变化:相同的代码在每次运行时都会产生相同的分析结果。
关键技术包括:
- 根据编码标准规则进行模式匹配,以标记违规项和可疑的代码结构
- 通过值追踪监控执行路径中的变量值,并捕获无效状态
- 边界值检查,用于验证变量是否始终处于预期范围内
- 对控制流和数据流进行抽象解释,以识别依赖关系和可达性问题
静态分析能发现什么
静态分析能够可靠检测出的缺陷类别包括但不限于:
- 空指针解引用和数组越界访问
- 未初始化的变量和不正确的类型转换
- 违反编码标准,包括MISRA C:2025、MISRA C:2023、MISRA C++:2023、AUTOSAR C++和CERT-C
- 映射到CWE分类的安全漏洞,包括CWE前25名和KEV前10名列表
- 不可执行代码、逻辑错误和资源泄漏
- 并发问题,包括竞争条件和不正确的操作序列
PC-lint Plus
PC-lint Plus是一款用于C和C++源代码的静态分析工具。该工具已通过exida认证,符合IEC 61508(SIL 1-3)、ISO 26262(ASIL A-D)、IEC 62304和EN 50716标准,并已通过CWE兼容性认证。
PC-lint Plus开箱即支持MISRA C:2025、MISRA C:2023、MISRA C:2012(修订版 1-4)、MISRA C++:2023、MISRA C++:2008、AUTOSAR C++、CERT-C以及CWE。该工具可集成到几乎任何构建链和开发环境中,无需遥测或互联网连接即可本地运行,并能通过并行处理在大型代码库中高效扩展。抑制管理具有完全可追溯性:每项抑制都会被记录在案,可在规则级别定义基于查询的例外,且未使用的抑制会自动被标记。