IT이야기

Cobertura를 사용하여 코드 검사에서 메서드 제외

cyworld 2021. 4. 8. 20:50
반응형

Cobertura를 사용하여 코드 검사에서 메서드 제외


Cobertura 커버리지 보고서에 포함되지 않도록 코드를 제외하는 방법이 있습니까? 보장 보고서에 포함해서는 안되는 몇 가지 방법이 있으므로 보장 번호를 낮추지 않습니다.

나는 Clover에 그러한 기능이 있다는 것을 알고 있지만 Cobertura와 비슷한 것을 찾지 못했습니다.


계측에서 클래스를 제외 할 수 있습니다. 그런 다음 보고서에 나타나지 않아야합니다. 아래의 exclude 문을 참조하세요.

일부 메서드에 대한 호출을 무시할 수도 있습니다. 아래의 ignore 문을 참조하십시오 .

maven을 사용하는 경우 maven 플러그인 설명서를 참조하십시오 .

    <configuration>
      <instrumentation>
        <ignores>
          <ignore>com.example.boringcode.*</ignore>
        </ignores>
        <excludes>
          <exclude>com/example/dullcode/**/*.class</exclude>
          <exclude>com/example/**/*Test.class</exclude>
        </excludes>
      </instrumentation>
    </configuration>

그리고 개미를 위해 이것을보십시오 .

<cobertura-instrument todir="${instrumented.dir}">
  <ignore regex="org.apache.log4j.*" />
  <fileset dir="${classes.dir}">
    <include name="**/*.class" />
    <exclude name="**/*Test.class" />
  </fileset>
  <fileset dir="${jars.dir}">
    <include name="my-simple-plugin.jar" />
  </fileset>
</cobertura-instrument>

이것은 한동안 내 머리를 부러 뜨리고 있습니다.

내 문제는 빌드 섹션 대신보고 섹션에 cobertura maven 플러그인 설정이 있다는 것입니다.

계측 설정 및 따라서 클래스 또는 패키지 제외는 빌드 섹션에서 설정하지 않으면 적용되지 않으므로주의하십시오.


내부 클래스도 제외해야합니다.

<exclude>path/to/class/MyClass*.class</exclude>

별표가 누락 된 것을 알아 차리는 데 몇 년이 걸렸습니다!


Cobertura는 현재 이러한 기능을 제공하지 않으며 Emma (우리가 사용하는)도 향후 개선 사항으로 나열되어 있지만 주석이 아닌 제외 규칙에 대한 확장의 형태로 제공됩니다.

우스꽝스럽지 않고 100 % 노력할 수 있도록 접근하기 어려운 모서리를 깨끗하게 덮는 것이 편리 할 것입니다.

나는 주석이 더 친숙한 방법이라고 생각하지만, 그렇지 않으면 '@ExcludeFromCoverage'와 같은 것이 관대하게 추가 될까 두렵기 때문에 상당히 명시 적으로 이름을 지정하고 수용 가능한 시나리오 목록을 기반으로해야합니다.


2.0부터 자신 만의 @CoverageIgnore주석을 작성할 수 있습니다 .

Cobertura에 의해 인식되며 주석이 달린 메서드를 고려 하지 않을 것입니다 (내가 아는 한 클래스에서 작동하지 않음).

  1. 빈 주석을 만듭니다.
public @interface CoverageIgnore {}
  1. 그런 다음 보고서에서 제외 할 메소드에 주석을 추가하십시오.
public class SomeClass {
    @CoverageIgnore
    public void foo(String baz) {
        // useless stuff
    }
}

출처 : https://github.com/cobertura/cobertura/wiki/Coverage-Annotations

참조 URL : https://stackoverflow.com/questions/951569/exclude-methods-from-code-coverage-with-cobertura

반응형