官网地址:https://tca.tencent.com/
官网介绍:https://cloud.tencent.com/product/tcap 官方开源:(点击最下方【阅读原文】可直达)https://github.com/Tencent/CodeAnalysis 国内镜像:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis
规则名称:bugprone-implicit-widening-of-multiplication-result
该规则是Clang-Tidy 中的一个警告规则。
这个规则主要关注整数乘法表达式,当两个整数相乘时,如果它们的乘积超出了目标类型的表示范围,就会发生整型溢出。这可能导致未定义行为,如程序崩溃或结果错误。
该规则会分析和防止整数乘法中的溢出缺陷,从而提高代码的正确性和稳定性。
案例:
int foo(int a, int b) {
return a * b; // Clang-Tidy 将报告这个乘法表达式可能导致整数溢出。
}
int main() {
int x = 0x7fffffff; // x 是一个较大的正整数。
int y = 2;
int z = foo(x, y); // 由于整型溢出,z 的值可能是一个负数,导致错误的结果。
return 0;
}
tips:为了修复这个问题,可以将乘法操作的结果显式地转换为更大的类型,例如 long long,这样,即使乘法操作导致溢出,结果也将以正确的类型返回:
long long foo(int a, int b) {
return static_cast<long long>(a) * static_cast<long long>(b);
}
分析方案 -> 规则配置 -> 自定义规则包 -> 添加规则 ->搜索规则名bugprone-implicit-widening-of-multiplication-result->完成批量添加