Eclipse计算代码行


107

我已经尝试过Metrics插件,尽管它很不错,但并不是我老板想要的。它只将一条线}作为一条线,而他不希望将其视为“不是线,而是样式选择”。我还需要生成有关提供的指标的某种形式的报告。有什么好的工具吗?


1
附带问题:这是否可以用作衡量您的软件开发人员工作状况的指标?如果是这样,则字符/非空格计数可能会更好。甚至看起来它似乎还是一个非常武断的指标……正如一位朋友所说:“总的来说,解决问题的更多代码行并不比解决同一问题的更少代码行更好(或更糟)”
Sancarn

Answers:


93

安装Eclipse Metrics插件。创建HTML报告(带有可选的XML和CSV)right-click a project -> Export -> Other -> Metrics

您可以通过忽略空白行和仅注释行来调整代码行指标,或者根据需要排除Javadoc。为此,请检查以下位置的标签Preferences -> Metrics -> LoC

而已。没有特殊的选择可以排除花括号{}

该插件提供了LoC的替代度量,称为Number of Statements。这是作者对此要说的:

此度量标准表示方法中的语句数。我认为它比代码行更健壮,因为代码行在不同的格式约定方面比较脆弱。

编辑:

在澄清了问题之后,我了解到您需要查看实时指标违反情况,例如编译器警告或错误。您还需要报告功能才能为老板创建报告。我上面描述的插件用于报告,因为您必须在想要查看指标时将其导出。


正是我要找的东西,并且具有不错的导出功能。
george_h 2012年

1
该插件的当前版本(3.14.1)似乎不适用于Eclipse Luna(4.4)。令人惊讶的是,Sourceforge的古老Metrics插件仍然有效……
ejain 2014年

许多人报告说它不再工作了,但是没有人在SourceForge上提交错误……
Thomas Weller 2015年

6
是的 我在下看不到任何选项right click a project -> Export,我直接从eclipse市场安装了插件-版本为- Eclipse Metrics 3.12.0,谁能帮我。谢谢!
OverrockSTAR


263

总会有“强力力量”:

  1. 搜索->文件

  2. 在“包含文本”->中键入以下内容^.*$。然后选中“正则表达式”复选框

  3. 在“文件名模式”中输入以下内容-> *.java

  4. 点击“搜索”

  5. 在“搜索”标签中检查匹配数。


11
这正是我想要的。它不排除方括号或其他花哨的内容,但可以提供我正在寻找的答案(日食,无插件)。谢谢!
路加福音

24
您也可以使用\n[\s]*,它也会忽略空行
Ascalonian '16

3
非常好的解决方案,不需要其他插件!+1
Stephan

2
这适用于最新的(霓虹)日食,但指标插件不起作用
Anatoly Yakimchuk

2
@omerio注释也必须键入,并且是任何源代码的必要部分。不计算这些诱因就不重要,或者仅仅是盲目的文字-这是一个严重的错误。
Axel Amthor

23

如果在OSX或* NIX上使用

从* .java文件获取所有实际的Java代码行

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

从* .java文件中获取所有行,其中包括空行和注释

find . -name "*.java" -exec cat | wc -l

获取每个文件的信息,这将为您提供[文件路径+“,” +行数]

find . -name "*.java" -exec wc -l {} \;

在OSX上运行第一个命令,我得到:grep:无效字符范围0
omerio

这对我有用。名称“ * .java” | xargs猫| grep'[alnum]'| wc -l
omerio 16-3-14

2
应该是find . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

另一种方法是使用另一个loc实用程序,例如LocMetrics
它还列出了许多其他loc工具。与Eclipse的集成并不总是存在的(就像与Metrics2一样,您可以签出,因为它是比Metrics更新的版本),但是至少那些工具可以根据逻辑行进行推理(通过求和计算)终端分号和终端花括号)。
您还可以检查eclipse-metrics是否更符合您的期望。


7

另一个工具是Google Analytix,即使在出现错误的情况下也无法构建项目,它也将允许您运行指标


尽管该网站说它仅适用于旧版本的eclipse,但对我来说,在Luna上运行正常。谢谢你
CamHart 2015年

7

在Eclipse中计算代码行的一种可能方法是:

使用“搜索/文件...”菜单,选择“文件搜索”选项卡,为“包含文本”指定\ n [\ s] *(这不会计算空行),然后勾选正则表达式。

帽子提示:www.monblocnotes.com/node/2030


哇,那是超级天才。很高兴不计入空行,只要您没有按数字付费...
JohnnyB

1

我创建了一个Eclipse插件,可以计算源代码的行数。它支持Kotlin,Java,Java Script,JSP,XML,C / C ++,C#和许多其他文件类型。

请看看。对于任何反馈,我们都表示感谢!

git-hub存储库在这里


0

ProjectCodeMeter完全按照您的描述计算LLOC(代码的逻辑行)(仅有效行)。它集成到eclipse中,作为外部代码度量工具,虽然不是实时的,但它生成报告。实际上,它计算许多源代码度量,例如复杂性,算术复杂性,硬编码字符串,数字常量。甚至估计开发时间(小时) 。


0

对于静态分析,我已经使用并建议SonarQube它运行几乎所有你可能需要的指标各种各样的语言,并且是在基本版本免费的(你要付出分析各种各样的语言我会只能用我的头上的枪来编码)。

您必须将其作为Web应用程序安装,以便在源代码存储库之外运行分析,但是它还具有Eclipse插件

如果您只想一次性知道项目中有多少行代码,那就太过分了。如果您想通过时间跟踪指标,在项目之间进行比较,在超过阈值时发出警告等,那就太棒了。

披露:我与SonarSource没有财务关系。


0

首先要做的就是确定您对“代码行”(LOC)的定义。在你的两个问题中

它只将}标记为一行,而他不希望将其视为“不是行,而是样式选择”

在答案中,例如

您可以通过忽略空白行和仅注释行来调整代码行指标,或者根据需要排除Javadoc

您可以说人们对什么构成代码行有不同的看法。特别是,人们通常对他们是否真正想要代码行数或语句数不准确。例如,如果您的以下很长的一行用语句填充,则要报告1 LOC还是数百个语句?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

并且当有人问您您所说的LOC是什么时,请确保您可以回答,即使这仅仅是“我对LOC的定义是Metrics2的定义”。通常,对于大多数常用格式的代码(与我的示例不同),流行的工具将给出相当相似的数字,因此,只要您始终使用它们,Metrics2,SonarQube等应该都可以。换句话说,不要使用一个工具计算某些代码的LOC并将其值与使用另一种工具测量的该代码的更高版本进行比较。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.