2013-03-08 3 views
3

FindBugs을 Eclipse의 Ant에서 코드 분석에 사용하고 있습니다. 조각 다음Findbugs : RV_RETURN_VALUE_IGNORED_BAD_PRACTICE

RV_RETURN_VALUE_IGNORED_BAD_PRACTICE 제공 :

RV : 방법이 뛰어난 반환 값 (RV_RETURN_VALUE_IGNORED_BAD_PRACTICE)

이 방법은 선택하지 않은 값을 반환을 무시합니다. 반환 값 은 비정상적이거나 예기치 않은 함수 실행을 나타낼 수 있으므로 확인해야합니다. 예를 들어 파일을 성공적으로 삭제할 수없는 경우 File.delete() 메서드는 예외를 반환하지 않고 false를 반환합니다. 결과를 확인하지 않으면 예기치 않은 동작을 메서드 호출이 알리는 경우 비정형 반환 값을 반환하면 알 수 없습니다. 파일이 존재하거나, 메소드가 실행 유지해야하지 곳

public void export (File file) throws IOException { 
    if (!file.exists()) { 
     file.createNewFile(); 
    } 

    BufferedWriter bw = null; 
    try { 
     bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); 
    ... 

사실 난 상관 없어. 예외가 export()

의 외부에 던져 질 것이다 일어난 경우 어떻게이 코드를 다시 작성할 수 있으므로 경고/오류가 Findbugs의 설정 파일을 해제하지 않고, 표시되지 않는 이유는 무엇입니까?

답변

5

file.createNewFile()을 호출 할 필요가 없습니다. 어쨌든 FileWriter으로 파일이 만들어지기 때문입니다.

그러나 파일의 상위 폴더가 있는지 확인해야합니다.

+0

예, 그냥'if'를 모두 제거하십시오. . 그러나 나는 왜 그의 프로그램이 처음부터 작동하는지 아무도 신경 쓰지 않는지 궁금하다. – Axel

4

f.createNewFile(); 반환 boolean

사실 지정된 파일이 존재하지 않고 성공적으로 생성 된 경우; 명명 된 파일이 이미 파일이 존재하는지 여부를 걱정하거나하지 않는 경우 당신은 아마 exists에 대한 검사를 제외하려면 코드를 변경해야

변경 방법

boolean result = f.createNewFile();에 존재하는 경우 거짓과 파일이 없으면 직접 작성하는 BufferedWriter을 직접 작성하십시오. 또한 현재 코드를 계속 사용하려면 SuppressWarnings을 추가하여 경고를 무시하십시오.

+0

"부울 값을 반환합니다."알지만, 'result'가 다르게 처리되지 않으면 메시지를 제거하지 못합니다. –

+0

당신이 신경 쓰지 않는다면'SuppressWarnings'을 사용하여 무시할 수 있습니다. http://stackoverflow.com/questions/1829904/is-there-a-way-to-ignore-a-single-findbugs-warning 나는 또한 내 게시물을 편집합니다 –