在此版本中,我们专注于增强功能安全性和合规性解决方案。我们扩展了 AUTOSAR C++ 14 标准的覆盖率,以帮助您完全遵守 AUTOSAR 的请求自动 规则,并增加了对最新版本 CWE 准则的支持。

支持环境

新的 IDEs

我们增加了对以下方面的支持:

  • Visual Studio 20191

1C/C++test 需要随 Visual Studio 2019 一起安装特定的 Visual Studio 工作负载; 有关详细信息,请参见。支持 IDE

不推荐使用的 IDEs

不支持以下 IDEs,并且在将来的版本中将不再支持:

  • Microsoft Visual Studio 2008
  • Microsoft Visual Studio 2010

新编译器

编译器名称编译器首字母缩写词
GNU GCC 9.xgcc_9
GNU GCC 9.x (x86_64)gcc_9-64
适用于 ARM v.8.22x 的 IAR 编译器iccarm_8_22
适用于 ARM 8.40x 的 IAR 编译器 iccarm_8_40
Microsoft Visual C++ 14.2vc_14_2
Microsoft Visual C++ 14.2 (x86_64)vc_14_2-64
Clang C/C++ Compiler v 8.0 (x86_64)clang_8_0

现在扩展了对 QNX GCC 5.x(ARM)的支持,并批准将其用于对安全至关重要的软件开发。

现在基于 GCC 和 ARM 的编译器支持 ARM NEON 扩展。

弃用的编译器

不支持以下编译器,并且在将来的版本中将不再支持:

  • ARM RealView 4.1

  • 适用于 uVision 的 ARM RealView 4.1

  • CodeSourcery Sourcery G++ Lite 2009q1-203

  • GNU GCC 4.0.x

  • GNU GCC 4.0.x (x86_64)

  • GNU GCC 4.1.x

  • GNU GCC 4.1.x (x86_64)

  • GNU GCC 4.2.x

  • GNU GCC 4.2.x (x86_64)

  • GNU GCC 4.3.x

  • GNU GCC 4.3.x (x86_64)

  • GNU GCC 4.4.x

  • GNU GCC 4.4.x (x86_64)

  • 适用于 ARM 6.1x 的 IAR 编译器

  • 适用于 ARM 6.3x 的 IAR 编译器

  • 适用于 MSP430 v.5.4x 的 IAR 编译器

  • Microsoft Visual C++ 9.0
  • Microsoft Visual C++ 10.0
  • TI TMS320C2000 C/C++ 编译器 v6.2

  • TI TMS320C6x C/C++ 编译器 v7.3

  • TI MSP430 C/C++ 编译器 v4.0

  • 用于 TriCore C/C++ 编译器 4.0 的 Vx-toolset

  • Wind River GCC 3.4.x

Windows 不再支持 Intel C++ Compiler v 18.0。

扩展的 Automotive Compliance Pack

我们扩展了对 AUTOSAR C++ 14 的支持,以帮助您实现对标准的遵守。现在已完全涵盖“必需”和“自动化”类别中的所有AUTOSAR规则,以支持您在 汽车系统体系开发 结构中的测试工作。

扩展的安全 Compliance Pack

我们增加了对新更新的2019年通用弱点枚举(CWE)的支持。C/C++ test 现在附带新的测试配置,可帮助您强制遵守 Cusp 准则中的 CWE Top 25 2019 和 CWE 弱点; 请参阅下面的 新的和更新的测试配置 部分。

新建的和更新的代码分析规则

我们添加了新的静态分析规则,以扩展合规性标准的覆盖范围,特别关注 AUTOSAR 标准 C++ 14;有关新规则和更新规则的列表,请参见 新规则更新规则

此外,我们添加了 NOMCIM 指标来计算函数中的函数调用次数。

新的和更新的测试配置

我们添加了以下测试配置:

  • CWE Top 25 2019
  • CWE Top 25 + On the Cusp 2019
  • OWASP Top 10 2017
  • UL 2900

弃用的测试配置

  • CWE-SANS Top 25 Most Dangerous Programming Errors – 不推荐使用,并已由 CWE Top 25 2019 测试配置取代
  • OWASP Top 10 2017 – 不推荐使用,并已由 OWASP Top 10 2017 测试配置取代
  • UL 2900 –不推荐使用,并已由 UL 2900 测试配置其中包括 CWE SANS Top 25 + 在 Cusp 2019 和 OWASP Top 10 2017 规则取代

默认情况下,不推荐使用的测试配置 不可用,并且只能用作用户定义的测试配置。现在,它们在以下位置随 C/C++ test 一起提供:[INSTALL_DIR]\configs\Deprecated.

创建调用原始函数的存根

如果未在测试用例中注册特定于测试用例的存根回调函数,则存根回调机制已得到增强,可以调用原始函数。 请参见 创建调用原始函数的存根

独立许可证服务器

现在您可以从 DTP 的其他实例或独立的许可证服务器获取 Parasoft 许可证。请参见许可

OpenID Connect 支持

现在您可以通过 OpenID Connect 在 DTP 上进行身份验证,从而为与 DTP 服务器的交互增加一层安全性。有关详细信息,请参见 在 UI 中配置 OpenID Connect配置 OpenID Connect.properties 文件

其他变更

  • 现在默认支持 @test问题跟踪标记,用于将测试与开发工件相关联。请参见指示代码和测试的关联
  • 增量分析模式下的流量分析性能得到了提高。我们减少了后续运行的分析时间。
  • 不再支持连接到 Project Center。DTP/Concerto 随附的 Project Center 模块已达到使用寿命(EOL)阶段,并且已在DTP 5.4.2
  • 不再支持早于版本 7 的 QNX Momentics IDE。

已解决的 Bugs 和 FRs

Bug/FR ID

说明

CPP-39554

规则 CODSTA-13 应该更新为遵循 MISRA2004-17_3

CPP-39913

VS 无法在 Visual Studio 中启用过滤的规则。

CPP-42073

添加对 ARM NEON 扩展的支持

CPP-42495

当函数定义不可用(可见)时,规则 COMMENT-04 不应报告函数声明

CPP-42527

改进 AUTOSAR-M2_13_2-a 的映射(C++ 14 语义)

CPP-42858

改进 CERT-INT31 的映射

CPP-43140

改进 MISRA2012-RULE-2_2 的映射

CPP-43141

规则 CODSTA-163_b(MISRAC2012-RULE_10_3-b)报告三元运算符的误警率

CPP-43142

规则 CODSTA-CPP-59 报告 __cplusplus 宏排除的 #include 指令的误警率

CPP-43143

规则 MISRA2004-9_2_c(AUTOSAR-M8_5_2-c)在 std::array 和 constexpr 上错误报告

CPP-43150

当静态常量变量用作模板参数时,规则 GLOBAL-ONEUSEVAR(MISRA2008-0_1_4)报告误警率

CPP-43413

规则 OPT-02(OPT-03,OPT-31)报告 lambdas 捕获的参数/变量的误警率

CPP-43414

解析报告的模板中用户定义后缀的失败信息(C++ 14)

CPP-43465

LSI 无法读取 ARM OE 工具链的对象/库数据

CPP-43479

检测代码时报告错误(进程退出代码:137)

CPP-43523

运行单元测试时报告错误:无效的文件格式:无法读取导出

CPP-43549

自定义源/头文件扩展名未从 IDE 传播到 Static Analysis 引擎

CPP-43558

 调试测试用例时未禁用超时

CPP-43567

报告来自 libstdc++ 的 __once_call 和 __once_callable 符号没有被 LSI 找到

CPP-43568

如果在计算机上同时安装了 VS2017 和 VS 2019,则无法安装 C /C++ test

CPP-43602

为 GHS/ARM 编译器配置 gnu99 选项

CPP-43603

规则 FORMAT-43 在 #ifdef/difndef 配对时报告误警率

CPP-43643

IAR-RL78 编译器配置中缺少对 "--core”选项的支持

CPP-43667

当常量变量用作模板参数时,规则 OPT-05 报告误警率

CPP-43675

当在 printf/scanf 函数调用中将纯字符作为 '%c’指定符传递时,规则 PB-45 报告误警率

CPP-43688

规则 PB-45、PB-46、 PB-47、 PB-48、 PB-49 对 'scanf’ 函数的参数不起作用

CPP-43689

当在 'scanf’函数中使用字符说明符时,规则 PB-50 报告为误警率

CPP-43706

改进规则 MISRA2004-20_5(JSF-017):不要在违规消息中打印行号

CPP-43744

改进可过滤重复违规的算法。

CPP-43748

当从函数返回解引用的迭代器的地址时,规则 MISRA2004-17_6_a 报告误警率

CPP-43831

使用 Microsoft Windows Kit SDK 10.0.18362.0 的安全存根上的编译错误

CPP-43837

使用与Renesas RX C++ 2.5.X 编译器的 -endian=big 时解析失败报告

CPP-43869

规则 INIT-05 报告对右值引用的误警率

CPP-43889

报告解析失败:对非常量的引用的初始值必须为左值

CPP-43892

报告解析失败:引用了参数包 "Indexes”,但没有展开

CPP-43893

改进 CERT EXP45-C 的映射(删除 CERT_C-EXP45-a 和 CERT_C-EXP45-c)

CPP-43896

改进 Renesas Rx 的单元测试执行

CPP-43971

为 GCC 和 Clang 编译器启用 edg.implicit_noexcept_enabled 配置选项

CPP-43972

C/C++ test 无法从数据源读取 "$NULL”值

CPP-43975

当通过注释之前有预处理器指令,则规则 CODSTA-149 (CERT_C-MSC17-a) 报告误警率。

CPP-43992

TempLic*txt 文件创建且未在 temp 文件夹中清除

CPP-44001

为 CMFCSampleDlg::OnPaint() 创建测试用例时,VS IDE 没有响应

CPP-44025

规则 CERT_C-INT36-a 在将 '0’强制转换为 void* 类型时报告误警率

CPP-44045

规则 OPT-06 报告 lambda 捕获的局部变量的误警率

CPP-44046

STATUS_ACCESS_VIOLATION: 线程尝试读取或写入它没有访问权限的虚拟地址。

CPP-44055

VS C/C++ test 仅处理第一个 -localsettings 参数(忽略其他参数)

CPP-44059

报告 HTML - 测试用例中的测试功能具有空白字段

CPP-44088

静态分析(cwc)在文字变量模板的代码 3 中退出

CPP-44225

在移位表达式中使用操作数的双精度转换时,规则 MISRA2004-12_8(MISRAC2012-RULE_12_2-a)报告误警率

CPP-44271

报告解析失败:表达式必须具有常数 static constexpr bool 值= has_named_enum_tag <T>(0);

CPP-44273

重命名测试用例实际上会重命名该测试的类名

CPP-44274

规则 HICPP-17_2_1-a (AUTOSAR-A17_1_1-b) 报告 #include <string> 上的误警率

CPP-44538

添加对缺少的 IAR 原子内建函数的支持

CPP-44576

C++test 10.4.3 BETA - 命令行分析未获得许可

FA-4617

BD-PB-DEREF在检查数组变量是否为空时报告误警率

FA-4651

BD-RES-FREE 误警率表示释放已经作为另一种类型的资源释放的内存(例如 pthread 互斥锁)

FA-4998

在关闭的文件描述符上执行的算术操作上,BD-RES-Free 的 Bogus 违规。

FA-7097

BD-PB-PTRARR 类型不匹配的误警率

FA-7105

BD-PB-OVERFWR 误警率

FA-7191

使用常量表达式时,BD-RES-INVFREE 误警率

FA-7195

BD-CO-ITOUT - container cend() 方法的误警率

FA-7266

错误的流量分析结果:FA 不考虑常量全局数组的元素值。

FA-7291

关闭数组元素引用的资源时,BD-RES-INVFREE 的误警率。

FA-7398

Flow Analysis Aggressive 报告了C++ test 10.4.2 中的静态分析问题

FA-7410

使用 typedef 时 BD-SECURITY-OVERFFMT 的误警率

FA-7413

MISRA2012-RULE-19-1_c(BD-PB-OVERLAP)的误警率

FA-7441

在字符串格式中指定 %*s 时,CERT_C-ARR38-c (BD-PB-OVERFFMT) 报告 FP 违规

XT-36609密码中的 £ 字符可防止 Parasoft 工具连接到 DTP
XT-36611使用 'min’选项发布 Sim-link 源代码失败
XT-36843尝试获取许可证时,使用 cpptestcli 的并发构建不等待超时
XT-36950从 XML Graphics Project 更新易受攻击的库
XT-37358100% 成功通过测试时,报告中不会显示 100%



新建规则

规则 ID

标题

AUTOSAR-A0_1_5-a

虚函数中不得有未使用的命名参数

AUTOSAR-A12_1_3-a

在所有构造函数中使用相同常量值初始化数据成员的用户定义的构造函数,应改用 NSDMI 进行初始化

AUTOSAR-A12_1_6-a

不需要进一步显式初始化并且需要基类中的所有构造函数的派生类都应使用继承的构造函数

AUTOSAR-A15_3_4-a

避免使用 catch-all 的异常处理程序

AUTOSAR-A15_4_5-a

应该在函数声明之前直接在注释中指定可能从函数引发的检查异常

AUTOSAR-A15_5_2-c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'quick_exit()’和 '_Exit()’函数

AUTOSAR-A1_1_1-a

不得使用 'register’存储类说明符

AUTOSAR-A1_1_1-b

声明复制构造函数时,应声明复制赋值运算符(反之亦然)

AUTOSAR-A1_1_1-c

对于具有非平凡析构函数的类,应声明复制构造函数和复制赋值运算符

AUTOSAR-A1_1_1-d

不得使用 C 库

AUTOSAR-A1_1_1-e

在 lambdas 上优先于 std::bind、std::bind1st 和 std::bind2nd

AUTOSAR-A1_1_1-f

不应使用 'binder1st’和 'binder2nd’标识符

AUTOSAR-A1_1_1-g

最好使用 std::unique_ptr 代替 std::auto_ptr

AUTOSAR-A1_1_1-h

不应使用 'random_shuffle’标识符

AUTOSAR-A1_1_1-i

不要在 'bool’类型的操作数上使用增量运算符(++)

AUTOSAR-A1_1_1-j

不应使用 'set_unexpected’标识符

AUTOSAR-A1_1_1-k

不要使用抛出异常规范

AUTOSAR-A27_0_4-a

不要使用会写入未检查范围的缓冲区的不安全 C 函数

AUTOSAR-A27_0_4-b

避免使用不检查边界的不安全的字符串函数

AUTOSAR-A27_0_4-c

不要使用 'char’缓冲区存储 'std::cin’的输入

AUTOSAR-A27_0_4-d

不得使用 C-style 字符串

AUTOSAR-A2_10_4-a

具有静态存储持续时间的非成员对象的标识符名称不得在命名空间内重用

AUTOSAR-A2_10_4-b

非成员静态函数的标识符名称不得在命名空间内重用

AUTOSAR-A2_7_3-a

在类型、数据成员和函数的所有声明之前,均应加上带有'@brief'标记的注释

AUTOSAR-A2_7_3-b

函数参数和返回类型应在函数声明之前的注释中记录

AUTOSAR-A3_3_2-a

静态和线程局部对象应进行常量初始化

AUTOSAR-A5_1_6-a

必须明确指定非无效返回类型 lambda 表达式的返回类型

AUTOSAR-A5_1_8-a

Lambda 表达式不应在另一个 Lambda 表达式中定义

AUTOSAR-A5_3_1-a

'typeid’ 运算符的操作数不得包含任何具有副作用的表达式

AUTOSAR-A5_3_1-b

'typeid’运算符的操作数不得包含会引起副作用的函数调用

AUTOSAR-A6_2_1-a

复制分配运算符不应有可能会影响复制对象的副作用

AUTOSAR-A6_2_1-b

移位分配运算符不应具有可能会影响对象移位的副作用

AUTOSAR-A6_2_2-a

表达式语句不应仅是对临时对象的构造函数的显式调用

AUTOSAR-A7_1_5-a

不要过度使用 'auto’说明符

AUTOSAR-A8_2_1-a

如果返回类型前面带有'typename'关键字,请使用结尾的返回类型语法

AUTOSAR-A8_4_8-a

不得使用输出参数

AUTOSAR-A8_5_2-a

不带等号的大括号初始化{}必须用于变量初始化

AUTOSAR-A8_5_3-a

Auto类型的变量不得使用 '{}’或 '={}' 括号初始化

AUTOSAR-M15_3_7-a

如果在单个 'try-catch' 语句或 'function-try-block’中提供了多个处理程序,则任何省略号(全部捕获)处理程序都应最后出现

AUTOSAR-M18_0_3-b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

AUTOSAR-M18_0_3-c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'system()'函数

AUTOSAR-M18_0_3-d

不得使用 'stdlib.h’或 'cstdlib’库中的 'getenv()’函数

BD-RES-INSUFMEM

分配足够的内存来保存给定类型的对象

BD-SECURITY-XXEXRC

在 libxerces-c 中禁用解析 XML 外部实体(XXE)

CERT_C-ERR04-b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

CERT_C-ERR04-c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'quick_exit()’和 '_Exit()’函数

CERT_C-ERR05-b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

CERT_C-ERR05-c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'quick_exit()’和 '_Exit()’函数

CERT_C-INT31-o

避免整数溢出

CERT_CPP-ERR50-n

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'quick_exit()’和 '_Exit()’函数

CERT_CPP-EXP52-d

'typeid’ 运算符的操作数不得包含任何具有副作用的表达式

CERT_CPP-EXP52-e

'typeid’运算符的操作数不得包含会引起副作用的函数调用

CODSTA-204

声明为 'noreturn’的函数应具有 'void' 返回类型

CODSTA-CPP-103

不得使用输出参数

CODSTA-CPP-104_b

'typeid’运算符的操作数不得包含会引起副作用的函数调用

CODSTA-CPP-104

'typeid’ 运算符的操作数不得包含任何具有副作用的表达式

CODSTA-MCPP-07_b

不应使用 'binder1st’和 'binder2nd’标识符

CODSTA-MCPP-13_b

'std::forward’函数应用于转发综合引用

CODSTA-MCPP-32

静态和线程局部对象应进行常量初始化

CODSTA-MCPP-37

不需要进一步显式初始化并且需要基类中的所有构造函数的派生类都应使用继承的构造函数

CODSTA-MCPP-38

不带等号的大括号初始化{}必须用于变量初始化

CODSTA-MCPP-39

Auto类型的变量不得使用 '{}’或 '={}' 括号初始化

CODSTA-MCPP-40

不要过度使用 'auto’说明符

CODSTA-MCPP-41

不应使用 'random_shuffle’标识符

CODSTA-MCPP-42

不要在 'bool’类型的操作数上使用增量运算符(++)

CODSTA-MCPP-43

不应使用 'set_unexpected’标识符

CODSTA-MCPP-44

Lambda 表达式不应在另一个 Lambda 表达式中定义

CODSTA-MCPP-45

必须明确指定非无效返回类型 lambda 表达式的返回类型

CODSTA-MCPP-46

在每个 lambda 表达式中包括一个参数列表

COMMENT-04_b

在函数声明之前的注释中记录函数

COMMENT-14_b

函数参数和返回类型应在函数声明之前的注释中记录

COMMENT-14

在类型、数据成员和函数的所有声明之前,均应加上带有'@brief'标记的注释

CWE-119-a

避免超出范围访问数组

CWE-119-b

避免超出范围访问数组和指针

CWE-119-c

避免由于定义不正确的格式限制而导致缓冲区溢出

CWE-119-d

从缓冲区读取时避免溢出

CWE-119-e

写入缓冲区时避免溢出

CWE-119-f

避免在数组索引中污染数据

CWE-119-g

防止缓冲区溢出污染数据

CWE-119-h

避免从受污染的数据中读取缓冲区溢出

CWE-119-i

避免缓冲区从受污染的数据中溢出

CWE-119-j

在没有检查源缓冲区大小的情况下可疑地使用了 'strcpy'

CWE-125-a

避免超出范围访问数组

CWE-125-b

避免超出范围访问数组和指针

CWE-125-c

从缓冲区读取时避免溢出

CWE-125-d

避免从受污染的数据中读取缓冲区溢出

CWE-190-a

避免整数溢出

CWE-190-b

避免将结果强制转换为更广泛的整数类型的表达式中可能出现的整数溢出

CWE-190-c

避免在将结果分配给更广泛的整数类型的变量的表达式中可能出现整数溢出

CWE-190-d

避免将结果与更广泛的整数类型的表达式进行比较的表达式中可能出现的整数溢出

CWE-190-e

'+'、'-'、'*’运算符中常量表达式的整数上溢或下溢

CWE-190-f

'<<' 运算符中常量表达式的整数上溢或下溢

CWE-190-g

常量无符号整数表达式的求值不应导致环绕

CWE-20-a

避免在数组索引中污染数据

CWE-20-b

防止整数溢出/溢出的污染数据

CWE-20-c

避免将未经验证的二进制数据传递到日志方法

CWE-20-d

防止命令注入

CWE-20-e

避免在输出控制台上打印污染的数据

CWE-20-f

防止环境注入

CWE-20-g

从格式字符串中排除未经过滤的用户输入

CWE-20-h

防止 SQL 注入

CWE-20-i

防止文件名注入

CWE-20-j

不受信任的数据用作循环边界

CWE-200-a

不要将由于应用程序错误而导致的潜在敏感信息打印到异常消息中

CWE-22-a

防止文件名注入

CWE-269-a

放弃特权时遵守正确的撤销顺序

CWE-269-b

确保成功放弃特权

CWE-287-a

不要使用弱加密功能

CWE-326-a

不要使用弱加密功能

CWE-362-a

禁止使用容易引起竞争的功能

CWE-362-b

访问文件时避免竞争条件

CWE-362-c

修改位字段时使用锁来防止竞争情况

CWE-362-d

使用 fork 和 file 描述符时避免竞争条件

CWE-362-e

不要使用具有不同锁集的全局变量

CWE-400-a

不要在堆栈上创建超出定义限制的变量

CWE-415-a

不要使用已释放的资源

CWE-416-a

不要使用已释放的资源

CWE-416-b

不要指向已释放的包装对象

CWE-416-c

在任何情况下都不应访问已释放的内存

CWE-426-a

注意确保 LoadLibrary() 将加载正确的库

CWE-476-a

避免空指针解引用

CWE-476-b

取消引用后不要检查 null

CWE-611-a

在 libxerces-c 中禁用解析 XML 外部实体(XXE)

CWE-617-a

不要使用断言

CWE-704-a

不得在指向函数的指针与指向函数的指针以外的任何其他类型之间进行转换

CWE-704-b

不能在指向函数类型的不兼容指针之间进行转换

CWE-704-c

不能在指向不完整类型的指针和任何其他类型的指针之间进行转换

CWE-704-d

指向对象类型的指针和指向不同对象类型的指针之间不得执行强制转换

CWE-704-e

在对象类型的指针与 'uintptr_t’或 'intptr_t’以外的整数类型之间不应执行转换

CWE-704-f

不应将指针从 void 转换为对象

CWE-704-g

不能在指向 void 的指针和算术类型之间执行强制转换

CWE-704-h

指向 void 的指针和算术类型之间不得执行隐式转换

CWE-704-i

不得在指向对象的指针和非整数算术类型之间执行强制转换

CWE-704-j

不得使用从较广泛的整数类型到较窄的整数类型的隐式转换,这可能会导致信息丢失

CWE-704-k

从整数到浮点类型的隐式转换可能会导致信息丢失,请勿使用

CWE-704-l

从整数常量到浮点型的隐式转换可能会导致信息丢失,请勿使用

CWE-732-a

在调用 'mkstemp’之前先调用 'umask’

CWE-732-b

如果使用 'open’或 'openat’系统调用创建文件,请指定访问权限位

CWE-770-a

确保释放资源

CWE-772-a

确保释放资源

CWE-772-b

在用作具有虚拟功能的基类的类中定义虚拟析构函数

CWE-78-a

防止命令注入

CWE-787-a

避免超出范围访问数组

CWE-787-b

避免超出范围访问数组和指针

CWE-787-c

避免由于定义不正确的格式限制而导致缓冲区溢出

CWE-787-d

写入缓冲区时避免溢出

CWE-787-e

防止缓冲区溢出污染数据

CWE-787-f

避免缓冲区从受污染的数据中溢出

CWE-798-a

不要硬编码字符串文字

CWE-835-a

避免无限循环

CWE-863-a

不要使用 'cuserid' 函数

CWE-89-a

防止 SQL 注入

EXCEPT-22

应该在函数声明之前直接在注释中指定可能从函数引发的检查异常

EXCEPT-23

不要使用抛出异常规范

EXCEPT-24

如果在单个 'try-catch' 语句或 'function-try-block’中提供了多个处理程序,则任何省略号(全部捕获)处理程序都应最后出现

EXCEPT-25

不要让 'catch’ 块为空

EXCEPT-26

避免使用 catch-all 的异常处理程序

GLOBAL-REUSEDQUALGLOBVAR

具有静态存储持续时间的非成员对象的标识符名称不得在命名空间内重用

GLOBAL-REUSEDQUALSTATFUN

非成员静态函数的标识符名称不得在命名空间内重用

HICPP-17_2_1-b

错误指示器 'errno’不得使用

HICPP-5_1_6-e

'typeid’ 运算符的操作数不得包含任何具有副作用的表达式

HICPP-5_1_6-f

'typeid’运算符的操作数不得包含会引起副作用的函数调用

INIT-17

在所有构造函数中使用相同常量值初始化数据成员的用户定义的构造函数,应改用 NSDMI 进行初始化

JSF-024_b

不得使用 <stdlib.h> 的库函数 'exit’

JSF-024_c

不得使用 <stdlib.h> 的库函数 'getenv’

JSF-024_d

不得使用 <stdlib.h> 的库函数 'system’

JSF-134_b

在函数声明之前的注释中记录函数

MISRA2004-20_11_b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

MISRA2004-20_11_c

不得使用 'stdlib.h’或 'cstdlib’库中的 'getenv()’函数

MISRA2004-20_11_d

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'system()'函数

MISRA2008-18_0_3_b

不得使用 <stdlib.h> 的库函数 'exit’

MISRA2008-18_0_3_c

不得使用 <stdlib.h> 的库函数 'getenv’

MISRA2008-18_0_3_d

不得使用 <stdlib.h> 的库函数 'system’

MISRA2012-RULE-21_8_b

不得使用 <stdlib.h> 的库函数 'exit’

MISRA2012-RULE-21_8_c

不得使用 <stdlib.h> 的库函数 'getenv’

MISRA2012-RULE-21_8_d

不得使用 <stdlib.h> 的库函数 'system’

MISRA2012-RULE-2_2_b

避免使用未使用的值

MISRAC2012-RULE_21_8-b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

MISRAC2012-RULE_21_8-c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'system()'函数

MISRAC2012-RULE_21_8-d

不得使用 'stdlib.h’或 'cstdlib’库中的 'getenv()’函数

MISRAC2012-RULE_2_2-b

避免使用未使用的值

MRM-56

复制分配运算符不应有可能会影响复制对象的副作用

MRM-57

移位分配运算符不应具有可能会影响对象移位的副作用

OPT-42

虚函数中不得有未使用的命名参数

OWASP2017-A1-a

避免将未经验证的二进制数据传递到日志方法

OWASP2017-A1-b

防止命令注入

OWASP2017-A1-c

避免在输出控制台上打印污染的数据

OWASP2017-A1-d

防止环境注入

OWASP2017-A1-e

从格式字符串中排除未经过滤的用户输入

OWASP2017-A1-f

防止 SQL 注入

OWASP2017-A10-a

所有异常都应重新引发或使用标准记录器记录

OWASP2017-A2-a

不要使用弱加密功能

OWASP2017-A3-a

正确的种子伪随机数生成器

OWASP2017-A4-a

在 libxerces-c 中禁用解析 XML 外部实体(XXE)

OWASP2017-A5-a

防止文件名注入

OWASP2017-A5-b

放弃特权时遵守正确的撤销顺序

OWASP2017-A5-c

确保成功放弃特权

OWASP2017-A6-a

如果在单个 try-catch 语句或 function-try-block 中为派生类及其部分或全部基数提供了多个处理程序,则这些处理程序应按最源于基类的顺序排序

OWASP2017-A6-b

不要让 'catch’ 块为空

OWASP2017-A6-c

正确使用 errno 值

PB-75_b

不得使用 'stdlib.h’或 'cstdlib’库中的 'exit()’函数

PB-75_c

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'quick_exit()’和 '_Exit()’函数

PB-76

不得使用 C-style 字符串

PB-77

表达式语句不应仅是对临时对象的构造函数的显式调用

SECURITY-48_b

不得使用 'stdlib.h’ 或 'cstdlib’库中的 'system()'函数

SECURITY-51

不要使用 'char’缓冲区存储 'std::cin’的输入

SECURITY-52

不得使用 'stdlib.h’或 'cstdlib’库中的 'getenv()’函数

TEMPL-17

如果返回类型前面带有'typename'关键字,请使用结尾的返回类型语法

更新规则

我们更新了以下静态分析规则以改善分析结果:

规则类别规则 IDs
AUTOSAR C++14 编码准则

AUTOSAR-A0_1_4-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_8_4-a, AUTOSAR-A13_5_4-b, AUTOSAR-A15_4_1-a, AUTOSAR-A15_5_2-b, AUTOSAR-A18_0_1-a, AUTOSAR-A18_9_2-a, AUTOSAR-A27_0_1-d, AUTOSAR-A27_0_2-b, AUTOSAR-A2_8_1-a, AUTOSAR-A3_8_1-a, AUTOSAR-A3_8_1-b, AUTOSAR-A5_1_3-a, AUTOSAR-A5_2_5-c, AUTOSAR-A8_4_5-a, AUTOSAR-A8_4_6-a, AUTOSAR-A8_5_0-a, AUTOSAR-M0_1_3-a, AUTOSAR-M0_1_3-b, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-c, AUTOSAR-M0_3_1-h, AUTOSAR-M0_3_1-j, AUTOSAR-M18_0_3-a, AUTOSAR-M2_13_2-a, AUTOSAR-M5_0_16-b, AUTOSAR-M5_0_18-a, AUTOSAR-M5_0_2-e, AUTOSAR-M5_3_4-c, AUTOSAR-M5_8_1-a, AUTOSAR-M7_5_1-a, AUTOSAR-M8_5_2-c

流量分析

BD-CO-ITOUT, BD-PB-CC, BD-PB-CHECKRET, BD-PB-DEREF, BD-PB-NOTINIT, BD-PB-OVERFFMT, BD-PB-OVERFWR, BD-PB-OVERLAP, BD-PB-PTRARR, BD-PB-SIGHAN, BD-RES-FREE, BD-RES-INVFREE, BD-SECURITY-OVERFFMT, BD-TRS-MLOCK, BD-TRS-ORDER

SEI CERT C

CERT_C-API01-a, CERT_C-ARR38-b, CERT_C-ARR38-c, CERT_C-CON31-b, CERT_C-CON31-c, CERT_C-DCL10-a, CERT_C-DCL11-a, CERT_C-DCL11-b, CERT_C-DCL11-c, CERT_C-DCL11-d, CERT_C-DCL11-e, CERT_C-DCL11-f, CERT_C-DCL18-b, CERT_C-DCL30-a, CERT_C-ENV01-c, CERT_C-ERR04-a, CERT_C-ERR05-a, CERT_C-EXP33-a, CERT_C-EXP39-d, CERT_C-EXP44-b, CERT_C-FIO46-a, CERT_C-FIO47-a, CERT_C-FIO47-b, CERT_C-FIO47-c, CERT_C-FIO47-d, CERT_C-FIO47-e, CERT_C-FIO47-f, CERT_C-INT31-i, CERT_C-MEM00-d, CERT_C-MEM01-a, CERT_C-MEM30-a, CERT_C-MEM34-a, CERT_C-MSC13-a, CERT_C-MSC14-a, CERT_C-MSC15-a, CERT_C-MSC24-b, CERT_C-POS51-a, CERT_C-SIG30-a, CERT_C-SIG31-a, CERT_C-SIG34-a, CERT_C-STR31-b

SEI CERT C++

CERT_CPP-CON53-a, CERT_CPP-ERR50-l, CERT_CPP-EXP52-c, CERT_CPP-EXP53-a, CERT_CPP-EXP54-a, CERT_CPP-EXP54-b, CERT_CPP-MEM50-a, CERT_CPP-MSC54-a, CERT_CPP-STR50-c

编码约定

CODSTA-102, CODSTA-103, CODSTA-116, CODSTA-13, CODSTA-163_b, CODSTA-22

C++ 的编码约定

CODSTA-CPP-59, CODSTA-CPP-86

Modern C++ 的编码约定

CODSTA-MCPP-10_a

CODSTA-MCPP-13

注释COMMENT-04
格式化FORMAT-43
高完整性 C++

HICPP-12_4_2-a, HICPP-17_2_1-a, HICPP-17_3_2-a, HICPP-18_2_2-a, HICPP-18_3_2-a, HICPP-1_2_1-i, HICPP-1_3_1-a, HICPP-1_3_3-a, HICPP-1_3_5-a, HICPP-2_5_2-a, HICPP-3_4_1-a, HICPP-3_5_1-d, HICPP-4_2_2-a, HICPP-5_1_3-a, HICPP-5_1_5-a, HICPP-5_1_6-c, HICPP-7_1_7-a, HICPP-8_4_1-a, HICPP-8_4_1-b

初始化

INIT-05, INIT-06

联合打击战斗机

JSF-024, JSF-060_b, JSF-071_b, JSF-077, JSF-085_a, JSF-111, JSF-117_b, JSF-134, JSF-139, JSF-143_a, JSF-149, JSF-164, JSF-166_c, JSF-171, JSF-181_a, JSF-203, JSF-204_a, JSF-204_b

MISRA C 1998

MISRA-027, MISRA-044, MISRA-051

MISRA C 2004

MISRA2004-12_1_e, MISRA2004-12_3_c, MISRA2004-12_8, MISRA2004-17_3, MISRA2004-17_6_a, MISRA2004-20_11, MISRA2004-7_1_a, MISRA2004-9_2_c

MISRA C++ 2008

MISRA2008-0_1_11, MISRA2008-0_1_3_a, MISRA2008-0_1_3_b, MISRA2008-0_3_1_d, MISRA2008-0_3_1_f, MISRA2008-0_3_1_h, MISRA2008-0_3_1_j, MISRA2008-18_0_1, MISRA2008-18_0_3, MISRA2008-2_13_2_a, MISRA2008-5_0_16_b, MISRA2008-5_0_18, MISRA2008-5_0_2_e, MISRA2008-5_3_4_c, MISRA2008-5_8_1, MISRA2008-7_5_1, MISRA2008-7_5_2_a, MISRA2008-8_5_2_c

MISRA C 2012

MISRAC2012-DIR_4_1-d, MISRAC2012-DIR_4_1-f, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_1-j, MISRAC2012-DIR_4_13-b, MISRAC2012-DIR_4_13-c, MISRAC2012-DIR_4_14-i, MISRAC2012-DIR_4_7-a, MISRAC2012-RULE_10_3-b, MISRAC2012-RULE_12_1-a, MISRAC2012-RULE_12_2-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_16_1-g, MISRAC2012-RULE_16_5-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_18_3-a, MISRAC2012-RULE_18_6-a, MISRAC2012-RULE_19_1-c, MISRAC2012-RULE_1_3-b, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_1_3-m, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_8-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_2-b, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_7_1-a, MISRAC2012-RULE_9_1-a

内存和资源管理MRM-41
命名约定NAMING-32
优化

OPT-02, OPT-02, OPT-03, OPT-05, OPT-06, OPT-29, OPT-31

可能的错误

PB-11, PB-18, PB-22, PB-23, PB-45, PB-46, PB-47, PB-48, PB-49, PB-50, PB-73, PB-75

安全性SECURITY-14

删除规则

以下规则已删除:

  • AUTOSAR-A13_5_4-a
  • AUTOSAR-A17_1_1-b
  • CERT_C-ENV33-b
  • CERT_C-EXP45-a
  • CERT_C-EXP45-c
  • CERT_C-FLP37-a
  • CERT_C-FLP37-b
  • CERT_C-INT36-a


  • No labels