2009-07-24 39 views
4

我一直在研究一些旧的C代码。我发现有相当多的POSIX调用已经过时,并在手册页中标记为已弃用检查C代码是否已弃用POSIX调用的最佳方法是什么?

什么是最好的方法来检查代码中是否仍有不推荐使用的POSIX调用?我在想:

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

回答

7

Lint可以找到弃用的东西(-deprecated标志)。

Coverity通常使用c和C++代码库来发现这类问题。

此外,也许更重要的是,静态分析工具发现了更广泛的问题和错误。

你永远不能有太多的静态代码分析。使用多种工具是有好处的。

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

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

+0

我们可以在这里推荐ack吗?如果OP可以访问Perl,ack将挽救生命。 – 2009-07-24 07:20:56

相关问题