Eclipse计算代码行

时间:2011-08-03 09:16:27

标签: eclipse metrics line-count

我已经尝试了Metrics plugin,尽管它很好,但并不是我老板想要的。它只用一条}作为一条线来计算一条线,他不希望这被视为“它不是一条线,它是一种风格选择”。我还需要生成有关所提供指标的某种形式的报告。对此有什么好的工具吗?

10 个答案:

答案 0 :(得分:241)

总有“蛮力”:

  1. 搜索 - >文件

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

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

  4. 点击“搜索”

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

答案 1 :(得分:90)

安装Eclipse Metrics Plugin。要创建HTML报告(使用可选的XML和CSV)right-click a project -> Export -> Other -> Metrics

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

就是这样。排除花括号{}没有特殊选项。

该插件为LoC提供了一个名为Number of Statements的替代指标。这就是作者对此所说的话:

  

此指标表示方法中的语句数。我认为它比代码行更有效,因为后者在不同的格式约定方面很脆弱。

编辑:

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

答案 2 :(得分:21)

如果在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 {} \;

答案 3 :(得分:8)

另一种方法是使用另一个loc实用程序,例如LocMetrics 它还列出了许多other loc tools。 与Eclipse的集成并不总是存在(就像 Metrics2 一样,您可以查看它,因为它是一个比Metrics更新的版本),但是至少这些工具可以用逻辑线来解释(通过对末端分号和末端花括号求和来计算)。
您还可以查看eclipse-metrics更适合您的期望。

答案 4 :(得分:7)

另一个工具是Google Analytix,即使您在出现错误时无法构建项目,也可以运行指标

答案 5 :(得分:5)

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

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

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

答案 6 :(得分:1)

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

请看一下。 任何反馈都将不胜感激!

the git-hub repository is here

答案 7 :(得分:0)

ProjectCodeMeter完全按照您的描述计算LLOC(逻辑代码行)(仅有效行)。它集成到eclipse as external code metrics tool,但它不是实时的,它会生成一个报告。实际上,它会计算许多源代码指标,如复杂性,算术复杂性,硬编码字符串,数字常量等。甚至可以估算出以小时为单位的开发时间。

答案 8 :(得分:0)

对于静态分析,我已经使用并推荐在just about all the metrics you could possibly want上运行a wide range of languages的SonarQube,并且在基本版本中是免费的(你需要付费才能分析我只会使用的语言用枪指着我的代码。)

您必须将其安装为运行源代码存储库分析的Web应用程序,但它也有Eclipse plugin

如果你只是想知道你的项目中有多少行代码,那就太过分了。如果您想跟踪时间段的指标,比较各个项目,超出阈值时触发警告等,这太棒了。

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

答案 9 :(得分:0)

要做的第一件事是确定您对“代码行”(LOC)的定义。在你的两个问题中

  

它只将}作为一行,但他不希望这样做   算作“不是线条,而是样式选择”

以及答案中的

  

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

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

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

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