我已经尝试了Metrics plugin,尽管它很好,但并不是我老板想要的。它只用一条}
作为一条线来计算一条线,他不希望这被视为“它不是一条线,它是一种风格选择”。我还需要生成有关所提供指标的某种形式的报告。对此有什么好的工具吗?
答案 0 :(得分:241)
总有“蛮力”:
搜索 - >文件
在“包含文字”中键入以下内容 - > ^.*$
。然后选中“正则表达式”复选框
在“文件名模式”中键入以下内容 - > *.java
点击“搜索”
检查“搜索”标签中的匹配数量。
答案 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] *(这不会计算空行),并勾选正则表达式。
答案 6 :(得分:1)
我创建了一个Eclipse插件,可以计算源代码行。 它支持Kotlin,Java,Java Script,JSP,XML,C / C ++,C#和许多其他文件类型。
请看一下。 任何反馈都将不胜感激!
答案 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并将其值与使用另一种工具测得的该代码的更高版本进行比较。