2014-10-11 4 views
0

Java로 작업하고 IDE는 Intellij입니다. 코드에서 모든 분기가 fileInputStream.close()를 호출하지 않았기 때문에 읽기 (열었지만) 제대로 닫히지 않은 파일을 삭제할 수 없다는 프로덕션 문제가있었습니다.입력 스트림이 열리고 코드의 아무 곳이나 닫히지 않은지 확인하는 방법이 있습니까?

intelij IDEA가 모든 코드를 살펴보고 open() 메서드 호출이없는 InputStreams (예 : FileInputStream)가 있는지 알려면 방황하고 있습니다.

내 버그를 훨씬 잘 고칠 수 있습니다.

당신은 IDEA 플러그인 관리자를 사용하여 플러그인을 설치할 수 있습니다

+3

, 그것은 모든 코드 경로를 따라하는 것은 불가능하다 (조합의 무한가있을 수 있습니다). 이러한 유형의 리소스 누출을 방지하려면 일반적으로 finally 블록의 모든 리소스를 닫습니다. – jtahlborn

답변

0

사용 QAPlug - FindBugs 플러그인, 닫히지 않은 흐름을 감지 할 수있을 것입니다. 설정으로 이동 한 다음 플러그인을 검색하십시오. 그런 다음 JetBrains Plugin에서 QAPlug와 QAPlug-FindBug를 설치하십시오. IDE를 다시 시작하고 프로젝트를 마우스 오른쪽 단추로 클릭하고 코드 분석을 선택합니다. 그런 다음 스트림이 닫히지 않으면보고합니다. FileInputStreams이 autoclosable 있습니다 자바 7에

enter image description here

+0

우리 코드에서 findbugs가 찾지 못한 스트림이있었습니다. BTW, 나는 findbugs를 정말 좋아하고 그것이 훌륭한 도구라고 생각하지만 오픈 스트림을 그리워했습니다. – hooknc

+0

FindBugs는 이클립스와 Maven 플러그인 등에서도 작동합니다 ... –