InputStreamやOutputStreamなどのJavaの多くのI/Oリソースは、終了時にhereのように終了する必要があります。Javaで閉じられていないI/Oリソースを見つけるには?
このようなリソースがクローズされていない場所、たとえばプロジェクトを検索するにはどうすればよいですか?この種のエラー:
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
}
私は、このようなPMDやFindBugsのなど、いくつかの静的解析ツールを試してみたが、彼らは間違っているようではないフラグ上記のコードを実行します。ジャワ7において
FindBugsでもこれを検出できるようです:http://stackoverflow.com/questions/2570820/findbugs-may-fail-to-close-stream-is-this-valid-in-case-of- inputstream – Thilo
FindBugsがどのルールをチェックするかを調整する必要がありますか? –