如何将某些类排除在代码范围之外? (Java)

时间:2019-05-07 06:04:47

标签: java spring maven spring-boot

通过将其添加到POM文件的标签中,我已经可以排除具有声纳立方体报告的类。

 <properties>
        <java.version>1.8</java.version>
        <sonar.exclusions> 
            /src/main/java/com/example/org/test/mainpackage/message/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/jwt/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/security/services/**/*
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/AuthRestAPIs.java
            ,
            /src/main/java/com/example/org/test/mainpackage/controller/TestRestAPIs.java
        </sonar.exclusions>
    </properties>

但是,在本地运行以测试代码覆盖率的相同代码根本无法正常工作。

我在哪里使用Maven和Spring Boot进行编程设置?

我已经可以通过

排除我想要的课程
  

设置>构建,执行,部署>排除> [要分类的类   排除]

或通过

  

编辑配置>选择代码覆盖率选项卡>然后添加   我想被排除或仅包含在代码中的包或类   覆盖率报告。

我想要对要排除的类进行编码,即像在pom文件中那样排除声纳qube的代码。

简而言之。我该如何以编程方式执行此操作?。

之所以我以编程方式想要这样做的原因是,我从代码覆盖率中排除了文件的报告的上述两个步骤是,我可以将其推送到存储库中的所有项目都没有包含文件,因此我为排除项所做的更改将反映在所有将从git存储库中拉出的人员中。没有添加任何文件或配置,我可以在仓库中推送和反映所有内容。这意味着我的排除项仅适用于本地,不适用于其他人。对?。因此,我在这里要求一种编程方式,例如将排除项放入POM文件中。

4 个答案:

答案 0 :(得分:1)

在使用Maven时,需要在jacoco插件中配置排除对象,该插件用于捕获覆盖率统计并将其传递给声纳。

<table id="exploreTable">
  <tr>
    <td>
      --Ommitted some codes for brevity-- 
   </td>
   <A name="Explore"></A>
  </tr>
  <tr>
    --Ommitted some codes for brevity--
    <td class="ColRow">
      <ul>
        <li>
          <a class="DetailLink" href="...&searchType=subject">
           Labor market -- Philippines
          </a>
          <a class="DetailLink"></a>
        </li>
      </ul>
    </td>
  </tr>
  <tr>
    <td class="ColRow">
      <ul>
        <li>
          <a class="DetailLink" href="....&searchType=subject">
            Sex discrimination in employment -- Philippines.
          </a>
          <a class="DetailLink"></a>
        </li>
      </ul>
    </td>
  </tr>
  <tr>
    <td class="ColRow">
      <ul>
        <li>
          <a class="DetailLink" href="...&searchType=DifferentType">
            Sex discrimination against women.
          </a>
          <a class="DetailLink"></a>
        </li>
      </ul>
    </td>
  </tr>
</table>

参考文献:

答案 1 :(得分:0)

if /?中,您可以执行以下操作:

application.properties

另外,另一种方法是在声纳中以admin身份登录并转到

  

设置>排除项>源文件排除项-在此处添加软件包。   重新启动服务器。

答案 2 :(得分:0)

这不是我真正想要的答案。但是现在这对我有用。仍在寻找通过pom文件,java或bean执行此操作的方法。谢谢

解决方案:

因此,如果您在项目的“运行配置”中进行了排除。这是我在问题中提到的第二步,即通过

  

“编辑配置”>“代码覆盖率”。   enter image description here


然后实际上添加您的排除项。 您只需勾选共享文本框,然后单击应用。 您所做的排除将在项目目录中

下提供
  

.idea / runConfigurations / [您所做的排除的xml文件,   其他运行配置]。   enter image description here

要推送此消息,只需删除

  git中.gitignore文件中的

.idea。   enter image description here


然后您就可以将存储库中的运行配置文件推送给其他人使用。或导出,这样就不必在intellij的编辑配置中对其进行手动配置。

PS: 这可能会影响Sonarqube中的覆盖率报告。您必须撤消此操作并从回购中取消本地运行配置,才能使用声纳qubes类排除项。出于某种原因,它跳过了我在执行此操作之前所做的所有排除。

答案 3 :(得分:0)

默认情况下,Intellij使用Intellij IDEA作为默认代码覆盖率运行程序。

如果您使用的是jacoco,则将此选项更改为JaCoCo。有关详细信息,请访问jetbrains网站。 https://www.jetbrains.com/help/idea/configuring-code-coverage-measurement.html

按照上述步骤,将考虑<sonar.coverage.exclusions>中定义的所有排除类,这些类将与远程SonarQube服务器配置中的类匹配。