c++ - 计算 SLOC GCC C/C++ Linux

标签 c++ c linux gcc

我们在 Linux 下有一个相当大的(280 个二进制文件)软件项目,目前它有一个非常分散的代码结构——这意味着人们无法 [弄清楚] 源代码树中的哪些代码是有效的(构建为可部署的二进制文件)什么是弃用的。但是 Makefile 很好。我们需要计算整个项目的 C/C++ SLOC。

这里有一个问题——我能知道 SLOC GCC 已经编译了吗?或者我可以从二进制文件中获取这些信息(可能是调试信息)?或者也许我可以找出二进制文件是从哪些源文件编译而来的,并使用这些信息来计算 SLOC?

谢谢 博格丹

最佳答案

这取决于你所说的GCC编译的SLOC是什么意思。如果您的意思是跟踪 GCC 使用的项目中的源文件,那么您可能会使用列出源文件和 header 的依赖项跟踪选项。那是 -M 和各种相关选项。当心包含系统提供的 header 。我有时使用的一种技术是用适当的变体替换标准 C 编译器 - 例如,为了确保 64 位编译,我使用 'CC="gcc -m64"' 来保证何时使用 C 编译器,它将以 64 位模式编译。显然,对于文件列表,您可以使用 wc 来计算行数。您使用“sort -u”来消除重复的 header 。

一个明显的陷阱是,如果您发现所有内容都包含在相对路径名中 - 那么您必须更加仔细地确定每个文件的位置。

如果您对 SLOC 有其他定义,则需要具体说明您的想法。有时,人们正在寻找非空白、非注释的 SLOC,例如 - 但您仍然需要源文件列表,我认为 -M 选项将帮助您确定。

关于c++ - 计算 SLOC GCC C/C++ Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543812/

相关文章:

c++ - 为什么 STL "empty"成员函数没有调用 "isEmpty"?

C - BitArray - 设置 uint64_t 的单个位

c++ - 在释放/删除时写入垃圾

linux - 在使用 CURL 重定向到 GET 期间,附加到 POST 请求的数据消失了

linux - 在Linux中处理SIGCHLD、EINT和accept()的正确方法

c++ - 一个类可以在同一个命名空间中拥有另一个同名的成员吗?

c++ - 基于输入文件的未知大小数组

PHP 邮件功能从服务器发送但不是从 php

c++ - 在 C++ 中调用作为参数传递的同一模板函数的两个版本

c - 关于有效文件路径的问题