Nhiều tài nguyên I/O trong Java như InputStream và OutputStream cần được đóng khi chúng được hoàn thành, như được thảo luận here.Làm cách nào để tìm tài nguyên I/O không được khai báo trong Java?
Tôi làm cách nào để tìm kiếm dự án của mình cho những địa điểm không bị đóng tài nguyên, ví dụ: loại lỗi này:
private void readFile(File file) throws IOException {
InputStream in = new FileInputStream(file);
int nextByte = in.read();
while (nextByte != -1) {
// Do something with the byte here
// ...
// Read the next byte
nextByte = in.read();
}
// Oops! Not closing the InputStream
}
Tôi đã thử một số công cụ phân tích tĩnh như PMD và FindBugs, nhưng chúng không gắn cờ mã ở trên là sai.
FindBugs dường như có thể phát hiện ra điều này, mặc dù: http://stackoverflow.com/questions/2570820/findbugs-may-fail-to-close-stream-is-this-valid-in-case-of- inputstream – Thilo
Âm thanh như bạn cần điều chỉnh quy tắc FindBugs kiểm tra –