Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';检查C代码是否有不推荐的POSIX调用的最佳方法是什么?_C_Linux_Gcc_Unix - Fatal编程技术网

什么';检查C代码是否有不推荐的POSIX调用的最佳方法是什么?

什么';检查C代码是否有不推荐的POSIX调用的最佳方法是什么?,c,linux,gcc,unix,C,Linux,Gcc,Unix,我一直在写一些旧的C代码。我发现有相当多的POSIX调用现在已经过时,并且在手册页面中标记为已弃用 检查代码中是否仍有不推荐的POSIX调用的最佳方法是什么?我想到的是: 特殊的gcc警告选项 某种lint工具检测这些调用 我的第一次尝试是使用grep的一个简单工具(即使它可能会抛出误报) 我怀疑您是否需要一个完整的解析器类型工具来实现这一点。可以找到不推荐的东西(-deprecated flag) 发现C和C++代码库中经常出现这种问题。 此外,也许更重要的是,静态分析工具可以发现范围更广的

我一直在写一些旧的C代码。我发现有相当多的POSIX调用现在已经过时,并且在手册页面中标记为已弃用

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

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

    • 我的第一次尝试是使用
      grep
      的一个简单工具(即使它可能会抛出误报)

      我怀疑您是否需要一个完整的解析器类型工具来实现这一点。

      可以找到不推荐的东西(-deprecated flag)

      发现C和C++代码库中经常出现这种问题。

      此外,也许更重要的是,静态分析工具可以发现范围更广的问题和bug


      静态代码分析永远不会太多。使用多种工具会带来好处。

      我们可以在此推荐ack吗?如果OP可以访问Perl,ack将拯救生命。如果我们假设没有任何东西可以做到这一点,这是个好主意。但是我们如何获得所有POSIX不推荐调用的文本文件呢?@Chris Lutz:我不熟悉ack,不知道从哪里获得它,也不知道它是做什么的。但这可能是用手提钻打苍蝇:-)
      >> 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);