QAC(特别是Helix QAC)提供的检证规则非常丰富且广泛,覆盖了从基础的代码规范到高级的安全性检查等多个方面。以下是QAC支持的一些关键规则类别和示例:
1. 编码标准合规性:
- MISRA C: 包括MISRA C:2004、MISRA C:2012等,关注安全性、可靠性和可维护性的编程准则。
- MISRA C++: 如MISRA C++:2008,专为C++代码设计的类似规则集。
- AUTOSAR C++14: 适用于汽车软件开发的标准。
- CERT C/C++: 关注软件安全的编码实践。
- CWE (Common Weakness Enumeration): 识别常见的软件弱点。
2. 安全性规则:
- 缓冲区溢出预防:检查数组访问、字符串操作等,防止潜在的溢出。
- 指针和内存管理:检测未初始化指针使用、野指针、内存泄漏等。
- 数值计算安全:避免整数溢出、浮点运算误差等。
3. 类型安全规则:
- 类型转换:检查不安全的类型转换,如隐式类型提升。
- 表达式类型匹配:确保操作数类型正确匹配。
4. 控制流和逻辑错误:
- 死代码检测:找出永远不会执行到的代码段。
- 未定义行为:识别可能导致程序行为未定义的操作。
- 空指针解引用:防止对NULL指针的解引用。
5. 资源管理:
- 文件和资源处理:检查文件句柄、锁等资源是否被正确打开和关闭。
- 内存分配与释放:确保动态分配的内存被适当释放。
6. 可维护性和代码质量:
- 代码复杂度:衡量循环嵌套、函数长度等,以降低维护难度。
- 命名规范:确保变量、函数名遵循一致的命名规则。
- 注释和文档:检查文档的完整性。
7. 特定行业和功能安全标准:
- ISO 26262: 支持汽车电子功能安全标准的合规性检查。
- IEC 61508: 适用于广泛工业领域的功能安全标准。
QAC还允许用户自定义规则或选择特定的规则集来适应项目或组织的具体需求,通过配置可以细化检查的严格程度,以及是否包含或排除某些特定规则。由于规则数量众多且具体规则内容较为复杂,推荐直接参考Helix QAC的官方文档获取完整的规则列表和详细说明;参考链接High Integrity CPP Coding Standard | Perforce。