工具/软件:TI C/C++编译器
在 简单的TI ARM 16.9 .4.LTS编译器程序上,在Ubuntu 16.04 上运行静态代码分析器(如CodeSonar),如下所示:
#include <Cstring>
INT MAIN ()
{
返回0;
}
由于TI编译器附带的嵌入式和修改的“STLport”库中似乎缺少头文件,因此...会出现分析和生成错误。 实际上,对于所示的程序,静态分析器会产生三种类型的错误:
(i) 缺失的包含文件错误(x4),如“s_c__linux.h”,“s_c_stl_mycomp.h”, “s_c__native_headers.h”, “u_Cstring”似乎是CodeSonar真正报告的缺失。 这可能是正确的,因为它们在文件系统的任何位置都不存在。 TI是否可以提供这些头文件,或者我在这里缺少什么解决方案?
‘无法确定CodeSonar真正报告的平台类型,CodeSonar的预处理程序错误(x1)为“无法确定endianess”,因为Endian符号_STLP_Big_ENDIAN或_STLP_Little_ENDIAN都未在文件“s_c_features.h”中定义,但初步研究表明这些都是由TI编译器头设置的 “./ti-CGT-arm_DIN.4.LTS/lib/src/s_c_ti.h”,应在/usr/include/DIAN等系统文件中定义,endian.h但似乎不是这样,并且可能建议平台不匹配或疏忽(Ubundi 16.04 和16.9 编译器似乎使用“__Little-ENAN”)。 这需要进一步调查。
(iii) 未定义的宏,其中CodeSonar似乎真正报告了‘# include _STLP_native_CPP_C_HEADER (Cstring)‘的错误(x1)。 CodeSonar可以合法地要求include语句的参数为文件名,但预处理程序无法解析符号_STLP_native_CPP_C_HEADER的原因可能是与上面项目(i)相同的问题,即缺少STLport头文件。