我一直在研究一些旧的C代码。我发现有很多POSIX调用现已过时,并在手册页中标记为已弃用。
检查代码中是否仍有弃用的POSIX调用的最佳方法是什么?我在考虑:
答案 0 :(得分:7)
Lint可以找到弃用的东西(-deprecated flag)。
Coverity通常使用c和c ++代码库来发现这种问题。
此外,也许更重要的是,静态分析工具可以找到更广泛的问题和错误。
您永远不会有太多的静态代码分析。使用多种工具会带来好处。
答案 1 :(得分:4)
我的第一次尝试是使用grep
的简单工具(即使它可能会引发误报)。
>> cd src_dir
>> cat deprecated_calls
printf
strcpy
>> for i in $(cat deprecated_calls) ; do
+> grep -R $i .
+> done
binmath.c:printf (" 0 sum:[%s]\n",sum);
binmath.c:printf (" 100 sum:[%s]\n",sum);
binmath.c:printf (" 200 sum:[%s]\n",sum);
binmath.c:printf (" 300 sum:[%s]\n",sum);
qq.c:printf("%d %d %d\n",i,j,k);
xx.c: fprintf (stderr, "Cannot open 'words.txt', error = %d\n", errno);
binmath.c:strcpy (buff, "0");
oldstuff/qq.c:printf("%d %d %d\n",i,j,k);
我怀疑你需要一个完整的解析器类型的工具。