代码之家  ›  专栏  ›  技术社区  ›  tm1701

如何指定“jacoco检查”的特定包?

  •  0
  • tm1701  · 技术社区  · 7 年前

    我的项目是使用Maven构建的。我使用“Jacoco”插件来执行质量检查。

    我试着“包括”一些软件包,但这不起作用。 我还尝试包括根包级别,并排除许多其他包。也不起作用。

    如何检查A、B和C包?请参见下面的示例:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
        <executions>
          ...
          <execution>
            <id>jacoco-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <rules>
                <rule>
                  <element>PACKAGE</element>
                  <includes>
                    <include>nl.abc.xyz.package-a.**</include>
                    <include>nl.abc.xyz.package-b.**</include>
                    <include>nl.abc.xyz.package-c.**</include>
                  </includes>
                  ... 
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.30</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    
    1 回复  |  直到 7 年前
        1
  •  7
  •   Godin    7 年前

    includes excludes rule 关于 name 对应元素的。 万一 <element>PACKAGE</element> 因此

              <includes>
                <include>nl.abc.xyz.package-a.**</include>
                <include>nl.abc.xyz.package-b.**</include>
                <include>nl.abc.xyz.package-c.**</include>
              </includes>
    

    匹配名为 nl.abc.xyz.package-a.something ,但不匹配 nl.abc.xyz.package-a .

    src/main/java/org/example/a/A.java

    package org.example.a;
    
    public class A {
    }
    

    src/main/java/org/example/a/B.java

    package org.example.b;
    
    public class B {
    }
    

    src/test/java/ExampleTest.java

    public class ExampleTest {
      @org.junit.Test
      public void test() {
        new org.example.a.A();
      }
    }
    

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>org.example</groupId>
      <artifactId>example</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <executions>
              <execution>
                <id>prepare-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <execution>
                <id>report</id>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
              <execution>
                <id>check</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <rules>
                    <rule>
                      <element>PACKAGE</element>
                      <includes>
                        <include>org.example.b</include>
                      </includes>
                      <limits>
                        <limit>
                          <counter>LINE</counter>
                          <value>COVEREDRATIO</value>
                          <minimum>0.90</minimum>
                        </limit>
                      </limits>
                    </rule>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    
    </project>
    

    执行 mvn verify

    [INFO] --- jacoco-maven-plugin:0.8.2:check (check) @ example ---
    [INFO] Loading execution data file /private/tmp/j/target/jacoco.exec
    [INFO] Analyzed bundle 'example' with 2 classes
    [WARNING] Rule violated for package org.example.b: lines covered ratio is 0.00, but expected minimum is 0.90
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    

    以及在更换 <include>org.example.b</include> 在…上 <include>org.example.*</include> org.example.* 比赛 org.example.b . 更换后 <include>org.example.a</include> 我们将如期成功。

    enter image description here