如何计算项目中的代码行数?
例如,在C++中,是否应该用类定义来计算头文件的行数?我是否应该计算链接所针对的(非标准)库的标题?
在Qt (或任何其他GUI框架)中,我应该计算表单设计的线条吗?
我也要数一下Makefile吗?
我之所以这样问,是因为它是衡量项目规模和/或所涉努力的一种简单方法。尽管GUI文件本身并不是代码,但程序员可能已经花了几个小时来完成它。
编辑你们中的大多数人不理解这个问题和/或假设我想使用LOC这个神奇的数字作为唯一的衡量一个项目,甚至一天的工作。
我认为消极的LOC日是非常好的一天。这意味着我已经设法更好、更有效地理解和模拟了这个问题。像“你为什么需要这个”这样的评论并不有趣。
不管你喜不喜欢,维基百科说Windows被评为4500万LOC,Linux2.6.35被评为1350万,我可以继续下去。
也许我可以问得更好。
无论如何,我的初衷是知道维基百科中的这些数字是如何计算出来的,而不是它们的主观性质。
我在一个MSDN博客中发现了这一点,它非常有用,因为它展示了VS2008是如何做到这一点的:

发布于 2011-08-11 15:03:35
在大多数情况下,只要您有一个标准,并且在同一种编程语言中的项目之间是一致的,这实际上并不重要。您通常应该创建一个文档,说明如何计算源代码行数,以及如何配置用于使用此方法的任何工具。
例如,在C++中,是否应该用类定义来计算头文件的行数?
我会的。毕竟,您确实编写了它们,并且在软件的构建过程中使用了它们。
我是否应该计算链接所针对的(非标准)库的标题?
是的,你可以,如果你是跟踪代码重用。如果您有能力计算来自其他项目(您自己的项目或开源项目)的代码行数,您可以考虑代码重用,并在计算各种与重用相关的度量时使用它。
在Qt (或任何其他GUI框架)中,我应该计算表单设计的线条吗?
如果你写的话,我会答应的。如果它们是自动生成的,那么也许。如果你做了一次,你就应该始终如一地去做。也许您想要考虑单独计算生成的代码,而不是手写代码。
我也要数一下Makefile吗?
我会说不,因为它是一个支持工具,而不是您构建的应用程序的一部分。同样,回到GUI框架问题,如果它是自动生成的,那么您可能需要单独计算它。或者您可能希望单独计算“构建脚本”,并包括Makefiles、Ant脚本等。
发布于 2011-08-11 14:29:49
你说这是衡量一个项目规模的简单方法。如果您想要度量大小,为什么不直接得到所有参与项目的文件的文件大小之和?或者您可以按文件类型(头、生成的代码、二进制文件(如图像文件、makefile等)进行分解。
根据项目的字节数与LOC相比,可以帮助您避免非常简单的代码行(如x=1;或{)与非常长的行数相同的问题。但是,这并不完美,因此您可能需要按不同的资源类型以及不同类型的资源数量进行细分。
测量所涉及的实际努力将永远不会与项目本身的大小相同。如果花了5个小时的努力来调整6个变量的值来得到正确的行为呢?项目的总规模(按字节数或LOC或其他什么)甚至可能根本不改变,但仍然需要进行更改。
发布于 2011-08-11 14:29:29
你应该在这里寻找你的答案:
http://en.wikipedia.org/wiki/Source_线条_的_代码
http://msquaredtechnologies.com/m2rsm/docs/rsm_度量标准_narration.htm
https://softwareengineering.stackexchange.com/questions/100365
复制相似问题