source

하나의 FindBugs 경고를 무시할 수 있는 방법이 있습니까?

factcode 2022. 8. 14. 11:55
반응형

하나의 FindBugs 경고를 무시할 수 있는 방법이 있습니까?

특정 경고를 PMD를 할 수 .// NOPMD그 대사를 무시하도록 말이야

FindBugs와 비슷한 것이 있나요?

FindBugs 초기 접근법에는 XML 설정 파일(일명 필터)이 포함됩니다.이것은 PMD 솔루션보다 매우 편리하지 않지만 FindBugs는 소스 코드가 아닌 바이트 코드로 작동하기 때문에 코멘트는 당연히 선택사항이 아닙니다.예:

<Match>
   <Class name="com.mycompany.Foo" />
   <Method name="bar" />
   <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>

그러나 이 문제를 해결하기 위해 FindBugs는 나중에 클래스 또는 메서드 수준에서 사용할 수 있는 주석( 참조)을 기반으로 한 다른 솔루션을 도입했습니다(내 생각에는 XML보다 편리합니다).예(최선은 아닐 수 있지만, 단지 예에 불과합니다.

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value="HE_EQUALS_USE_HASHCODE", 
    justification="I know what I'm doing")

.0 FindBugs 3.0.0 SuppressWarnings 위해 @SuppressFBWarnings와 입니다.SuppressWarnings.

하셨듯이 ''를 하실 수 있습니다.@SuppressFBWarnings할 수 을 직접 할 수 . 이 포함되어 있는지 하지 않습니다.코드에 다른 종속성을 추가하지 않거나 추가할 수 없는 경우 코드에 주석을 직접 추가할 수 있습니다. Findbugs는 Findbugs 。

@Retention(RetentionPolicy.CLASS)
public @interface SuppressFBWarnings {
    /**
     * The set of FindBugs warnings that are to be suppressed in
     * annotated element. The value can be a bug category, kind or pattern.
     *
     */
    String[] value() default {};

    /**
     * Optional documentation of the reason why the warning is suppressed
     */
    String justification() default "";
}

출처 : https://sourceforge.net/p/findbugs/feature-requests/298/ #5e88

되며 XML이 되어 있기 ).<FindBugsFilter>'이것'은 다음과 같습니다.

<FindBugsFilter>
    <Match>
        <Class name="com.mycompany.foo" />
        <Method name="bar" />
        <Bug pattern="NP_BOOLEAN_RETURN_NULL" />
    </Match>
</FindBugsFilter>

Android Studio FindBugs 플러그인을 사용하는 경우 파일 -> 기타 설정 -> 기타 설정 -> FindBugs-IDEA -> 필터 파일 제외 -> 추가를 사용하여 XML 필터 파일을 참조합니다.

그래들 업데이트

dependencies {
    compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}

FindBugs 보고서 찾기

파일://Users/your_user/IdeaProjects/projectname/build/reports/findbugs/main.html

특정 메시지 검색

버그를 발견하다

올바른 주석 버전 가져오기

import edu.umd.cs.findbugs.annotations.SuppressWarnings;

문제 코드 바로 위에 주석 추가

@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")

자세한 내용은 여기를 참조하십시오: findbugs 스프링 주석

이(2018년 5월)을 작성했을 때 FindBugs는 SpotBugs로 대체된 것으로 보입니다.사용방법SuppressFBWarnings 8 8에 대한 시간 됩니다.spotbugs-annotations.jar.

필터 파일을 사용하여 SpotBugs 규칙을 필터링하는 것은 이러한 문제가 없습니다.설명서는 여기 있습니다.

여기 기재되어 있는 다른 답변은 유효하지만, 이 문제를 해결할 수 있는 완전한 방법은 아닙니다.

완전성의 정신으로:

폼 파일에 findbugs 주석이 있어야 합니다.이것은 컴파일 시간일 뿐이므로,provided범위:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>findbugs-annotations</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>

이를 통해@SuppressFBWarnings을 제공하는 또 다른 의존관계가 있다.@SuppressWarnings다만, 상기의 내용은 보다 명확합니다.

그런 다음 방법 위에 주석을 추가합니다.

예.

@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE",
        justification = "Scanning generated code of try-with-resources")
@Override
public String get() {
    try (InputStream resourceStream =  owningType.getClassLoader().getResourceAsStream(resourcePath);
         BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream, UTF_8))) { ... }

여기에는 버그의 이름과 검색을 비활성화하는 이유가 모두 포함됩니다.

여기에서는, https://stackoverflow.com/a/14509697/1356953 를 참조해 주세요.

이 기능은, 다음과 같이 동작하는 것에 주의해 주세요.java.lang.SuppressWarnings별도의 주석을 사용할 필요가 없습니다.

필드의 @SuppressWarnings는 해당 필드 선언에 대해 보고된 findbugs 경고만 억제하며 해당 필드와 관련된 모든 경고는 억제하지 않습니다.

예를 들어 "Field only ever set to null" 경고가 표시되지 않습니다.

@Suppress Warnings()UWF_NULL_FIELD") String s = null. 가능한 한 작은 방법으로 경고 코드를 분리한 후 전체 메서드에서 경고를 억제하는 것이 최선이라고 생각합니다.

언급URL : https://stackoverflow.com/questions/1829904/is-there-a-way-to-ignore-a-single-findbugs-warning

반응형