检查C代码是否已弃用POSIX调用的最佳方法是什么?

时间:2009-07-24 06:57:07

标签: c linux gcc unix

我一直在研究一些旧的C代码。我发现有很多POSIX调用现已过时,并在手册页中标记为已弃用

检查代码中是否仍有弃用的POSIX调用的最佳方法是什么?我在考虑:

  • 特殊 gcc警告选项。
  • 检测这些来电的某种 lint 工具。

2 个答案:

答案 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);

我怀疑你需要一个完整的解析器类型的工具。