我们在 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/