Java 测量代码质量时的代码行与指令行
我有一个由许多模块组成的项目。我运行的是单元测试覆盖率和代码质量 出于技术原因,我不能为我的一个模块使用JaCoCo报告(GWT会删除Java 测量代码质量时的代码行与指令行,java,sonarqube,jacoco,loc,Java,Sonarqube,Jacoco,Loc,我有一个由许多模块组成的项目。我运行的是单元测试覆盖率和代码质量 出于技术原因,我不能为我的一个模块使用JaCoCo报告(GWT会删除target文件夹,我还不能解决这个问题) 假设我有8个模块,从1到8。 其中一个仅适用于域对象,因此我不想在测试中涉及它。另一个同样适用于自动生成的类 JaCoCo在5个模块上运行,声纳在6个模块上运行 JaCoCo显示的指令总数为145k 声纳显示总方位为75k 他们不是很相像吗?我错过什么了吗?无论我给他提供什么报告,杰科科都会考虑整个项目吗?有什么可能解
target
文件夹,我还不能解决这个问题)
假设我有8个模块,从1到8。
其中一个仅适用于域对象,因此我不想在测试中涉及它。另一个同样适用于自动生成的类
JaCoCo在5个模块上运行,声纳在6个模块上运行
JaCoCo显示的指令总数为145k
声纳显示总方位为75k
他们不是很相像吗?我错过什么了吗?无论我给他提供什么报告,杰科科都会考虑整个项目吗?有什么可能解释这种测量差距 他们不是很一样吗 一点也不 发件人: JaCoCo计数的最小单位是单个Java字节码指令 “指令”和“代码行”的比较就像苹果和橙子的比较——它们并不代表同一件事。单行代码通常包含许多字节码指令 比如说
System.out.println("Hello, World!");
是一行,但有3个字节码指令,如下所示:
顺便说一句,JaCoCo还统计线路。但是,在将这个数字与SonarQube中的LoC进行比较时,请考虑到计算算法是不同的——JaCoCo通过分析编译器以字节码记录的信息来计算这个数字,而SonarQube通过分析源代码来计算这个数字
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello, World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V