Muchos recursos de E/S en Java, como InputStream y OutputStream, deben cerrarse cuando finalizan, como se explica en here.¿Cómo encontrar recursos de E/S no cerrados en Java?
¿Cómo puedo buscar en mi proyecto los lugares donde tales recursos no se están cerrando, p. este tipo de error:
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
}
he intentado algunas herramientas de análisis estático como PMD y FindBugs, pero no lo hacen bandera del código anteriormente como equivocada.
FindBugs parece ser capaz de detectar esto, aunque: http://stackoverflow.com/questions/2570820/findbugs-may-fail-to-close-stream-is-this-valid-in-case-of- inputstream – Thilo
Parece que necesita ajustar qué reglas FindBugs comprueba –