我已经尝试过Metrics 插件,虽然它很好,但它不是我老板想要的。它只将一条线算作一条}
线,他不希望将其视为“它不是一条线,它是一种风格选择”。我还需要生成某种形式的关于所提供指标的报告。有什么好的工具吗?
10 回答
总是有“蛮力”:
搜索->文件
在“包含文本”-> 中键入以下内容
^.*$
。然后选中“正则表达式”复选框在“文件名模式”中键入以下内容 ->
*.java
点击“搜索”
检查“搜索”选项卡中的匹配数。
安装Eclipse 指标插件。创建 HTML 报告(带有可选的 XML 和 CSV)right-click a project -> Export -> Other -> Metrics
。
您可以通过忽略空白行和仅注释行来调整代码行指标,或者根据需要排除 Javadoc。为此,请检查 处的选项卡Preferences -> Metrics -> LoC
。
就是这样。没有排除花括号的特殊选项{}
。
该插件为 LoC 提供了一个替代指标,称为Number of Statements。这是作者不得不说的:
该指标表示方法中的语句数。我认为它比代码行更强大,因为后者在不同的格式约定方面很脆弱。
编辑:
在您澄清问题后,我了解到您需要查看实时指标违规情况,例如编译器警告或错误。您还需要一个报告功能来为您的老板创建报告。我上面描述的插件是用于报告的,因为您必须在想要查看它们时导出指标。
如果在 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 {} \;
在 Eclipse 中计算代码行数的一种可能方法:
使用 Search / File... 菜单,选择 File Search 选项卡,为 Containing text 指定 \n[\s]*(这不会计算空行),然后勾选 Regular expression。
另一种方法是使用另一个 loc 实用程序,例如LocMetrics。
它还列出了许多其他 loc 工具。与 Eclipse 的集成并不总是存在(与Metrics2 一样,您可以查看它,因为它是比Metrics更新的版本),但至少这些工具可以根据逻辑线进行推理(通过求和计算终端分号和终端花括号)。
您还可以检查eclipse-metrics是否更适合您的期望。
另一个工具是Google Analytix,即使您无法构建项目以防出错,它也可以让您运行指标
我创建了一个 Eclipse 插件,它可以计算源代码的行数。它支持 Kotlin、Java、Java Script、JSP、XML、C/C++、C# 和许多其他文件类型。
请看一下。对于任何反馈,我们都表示感谢!
ProjectCodeMeter 完全按照您的描述计算 LLOC(逻辑代码行)(仅有效行)。它作为外部代码度量工具集成到eclipse 中,虽然它不是实时的,但它会生成一个报告。实际上它计算了许多源代码度量,例如复杂性、算术复杂性、硬编码字符串、数字常量.. 甚至以小时为单位估计开发时间.
对于静态分析,我使用并推荐了 SonarQube,它几乎可以在多种语言上运行您可能想要的所有指标,并且在基本版本中是免费的(您必须付费才能分析我想要的各种语言只用枪指着我的头输入代码)。
您必须将其安装为运行分析源代码存储库的 Web 应用程序,但它也有一个Eclipse 插件。
如果您只是想一次性知道项目中有多少行代码,那就太过分了。如果您想通过时间跟踪指标、跨项目比较、超过阈值时发出警告等,这太棒了。
披露:我与 SonarSource 没有财务关系。
首先要做的是确定您对“代码行”(LOC)的定义。在你的两个问题中
它将只有一个 } 的行算作一行,他不希望这算作“它不是一行,它是一种样式选择”
在答案中,例如,
您可以通过忽略空白和仅注释行来调整代码行指标,或者如果需要排除 Javadoc
你可以看出人们对于一行代码的构成有不同的看法。尤其是,人们常常不清楚他们是否真的想要代码行数或语句数。例如,如果您有以下非常长的一行充满语句,您要报告什么,1 LOC 或数百个语句?
{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }
当有人问你叫什么 LOC 时,确保你能回答,即使它只是“我对 LOC 的定义是 Metrics2 的定义”。一般来说,对于最常用格式的代码(与我的示例不同),流行的工具会给出非常相似的数字,所以 Metrics2、SonarQube 等应该都可以,只要您始终如一地使用它们。换句话说,不要使用一种工具计算某些代码的 LOC,并将该值与使用不同工具测量的该代码的更高版本进行比较。