문제

나는 FindBugs, 특히 @checkfornull 주석과 함께 사용하기위한 JSR 305 주석을 실험 해 왔으며, 이는 방금 고객에게 버그를 발견 한 버그를 피할 수있는 버그를 피할 수있었습니다. jsr305.jar 및 annotations.jar를 빌드 경로에 추가했지만 FindBugs는 버그를 찾을 수 없습니다. Eclipse FindBugs 플러그인과 함께 Eclipse를 사용하고 있습니다. 아래는 동일한 버그를 보여주는 샘플 코드이지만 FindBugs를 실행할 때 버그를 찾을 수 없습니다. 나는 이클립스 갈릴레오와 가니메데에서 이것을 시도했다.

public class FindBugsAnnotationsTest {

    ArrayList<String> canBeNull;

    @CheckForNull
    public List<String> getCanBeNull() {
        return canBeNull;
    }

    public void shouldGetFindbugsWarning() {
    canBeNull.add("a string");

        getCanBeNull().add("a string");
    }
}
도움이 되었습니까?

해결책

이것은 분명 할 수 있지만, 귀하의 문제는 Eclipse (특히 FindBugs 플러그인)와 관련이 있다고 생각합니다.

이클립스 문제를 제거하고 FindBug가 자체적으로 올바르게 실행되는지 확인하기 위해 명령 줄에서 FindBugs를 실행하는 것을 고려할 수 있습니다. 독립형 모드에서 fin

소스 코드를 이름이라는 파일에 저장했습니다 FindBugsAnnotationsTest.java, 수입품을 추가했습니다 List, ArrayList, 그리고 CheckForNull, 컴파일 된 FindBugs 1.3.9. FindBugs는 NULL 값에 대한 몇 가지 경고를 생성합니다.

M D NP: Possible null pointer dereference in FindBugsAnnotationsTest.shouldGetFindbugsWarning() due to return value of called method  Dereferenced at FindBugsAnnotationsTest.java:[line 18]
M C UwF: Unwritten field: FindBugsAnnotationsTest.canBeNull  At FindBugsAnnotationsTest.java:[line 12]
M C NP: Read of unwritten field canBeNull in FindBugsAnnotationsTest.shouldGetFindbugsWarning()  At FindBugsAnnotationsTest.java:[line 16]
Warnings generated: 3

이것들은 내가 맨 위에 추가 한 수입품입니다. FindBugsAnnotationsTest.java:

import java.util.ArrayList;
import java.util.List;
import edu.umd.cs.findbugs.annotations.CheckForNull;

명령 :

javac -d . -classpath ${FINDBUGS_HOME}/lib/findbugs.jar FindBugsAnnotationsTest.java
${FINDBUGS_HOME}/bin/findbugs FindBugsAnnotationsTest.class

어디에 ${FINDBUGS_HOME} FindBugs 1.3.9가 설치된 디렉토리입니다. javac 경로에있는 것으로 가정합니다.

참고 : 나는 그것을 사용했다 findbugs.jar 대신에 annotations.jar 그리고 jsr305.jar 그러나이 명령으로 동일한 결과를 얻습니다.

javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top