gpt4 book ai didi

c - 静态代码分析器无法识别正在使用的 C int 类型

转载 作者:行者123 更新时间:2023-12-01 14:44:50 26 4
gpt4 key购买 nike

我在工作中的大型嵌入式系统项目 (C/C++) 中使用静态代码分析器。目前,所有模块都有几个违规行为:

Typedefs that indicate size and signedness should be used in place of the basic types.

但是,我们定义了一个头文件 (footypes.h),其中包含以下内容:

#ifdef LINUX_BUILD    
#include <inttypes.h>
#else
#ifdef VXWORKS_BUILD
#include <vxWorks.h>
#endif
#endif

typedef int8_t I8;
typedef uint8_t U8;
//etc

然后,模块中的实际代码如下所示:

#include <foo/footypes.h>

void bar(U8* foo){} //Violation given here
void bar(U8 foo){} //No violation given here

据我所知,此代码是正确且可移植的 - 这只是误报,还是实现有问题?

编辑:我刚刚意识到实际上只有在使用指针时才会出现违规 - 我已经更新了示例模块代码以反射(reflect)这一点。

最佳答案

我在 Semmle 工作,我可以确认这是我们工具中的误报 - 您的代码对我们来说没问题。

您看到的特定警报是我们为您的雇主及其编码指南提供的自定义分析查询。正如您所发现的,该特定查询有一个错误,当它们与指针类型一起使用时,它会忽略“可接受的”typedef。感谢您提请我们注意 - 我们将修复查询。

关于c - 静态代码分析器无法识别正在使用的 C int 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com