diff --git a/examples/android_hello/gradle_report.json b/examples/android_hello/gradle_report.json new file mode 100644 index 000000000..74dfb8151 --- /dev/null +++ b/examples/android_hello/gradle_report.json @@ -0,0 +1,14 @@ +[ + { + "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java", + "line": "20", + "type": "NULL_DEREFERENCE", + "procedure": "void MainActivity.onCreate(Bundle)" + }, + { + "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java", + "line": "37", + "type": "RESOURCE_LEAK", + "procedure": "void MainActivity.writeToFile()" + } +] diff --git a/infer/tests/ant_report.json b/infer/tests/ant_report.json new file mode 100644 index 000000000..3e9b060ff --- /dev/null +++ b/infer/tests/ant_report.json @@ -0,0 +1,616 @@ +[ + { + "line": "22", + "type": "ACTIVITY_LEAK", + "procedure": "void ActivityLeaks.directLeak()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "line": "41", + "type": "ACTIVITY_LEAK", + "procedure": "void ActivityLeaks.indirectLeak()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "type": "ACTIVITY_LEAK", + "procedure": "void ActivityLeaks.nonStaticInnerClassLeak()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "type": "ACTIVITY_LEAK", + "procedure": "void ActivityLeaks.leakAfterInstanceFieldWrite()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "type": "ACTIVITY_LEAK", + "procedure": "ActivityLeaks$Singleton ActivityLeaks.singletonLeak()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "type": "ACTIVITY_LEAK", + "procedure": "void ActivityLeaks.handlerLeak()", + "file": "codetoanalyze/java/infer/ActivityLeaks.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative()", + "file": "codetoanalyze/java/infer/AnalysisStops.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative()", + "file": "codetoanalyze/java/infer/AnalysisStops.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative()", + "file": "codetoanalyze/java/infer/AnalysisStops.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void AutoGenerated.npe()", + "file": "codetoanalyze/java/infer/AutoGenerated.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void Builtins.doNotBlockError(Object)", + "file": "codetoanalyze/java/infer/Builtins.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CloseableAsResourceExample.notClosingCloseable()", + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CloseableAsResourceExample.withException()", + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CloseableAsResourceExample.notClosingWrapper()", + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CloseableAsResourceExample.failToCloseWithCloseQuietly()", + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "T CloseableAsResourceExample.sourceOfNullWithResourceLeak()", + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int CursorLeaks.cursorNotClosed(SQLiteDatabase)", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int CursorLeaks.getImageCountHelperNotClosed(String)", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int CursorLeaks.getBucketCountNotClosed()", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CursorLeaks.queryUVMLegacyDbNotClosed()", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int CursorLeaks.completeDownloadNotClosed(DownloadManager)", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void CursorLeaks.loadPrefsFromContentProviderNotClosed()", + "file": "codetoanalyze/java/infer/CursorLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "int HashMapExample.getOneIntegerWithoutCheck()", + "file": "codetoanalyze/java/infer/HashMapExample.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer)", + "file": "codetoanalyze/java/infer/HashMapExample.java" + }, + { + "line": "42", + "type": "NULL_DEREFERENCE", + "procedure": "int NullPointerExceptions.nullPointerException()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "line": "64", + "type": "NULL_DEREFERENCE", + "procedure": "int NullPointerExceptions.nullPointerExceptionInterProc()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean)", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionUnlessFrameFails()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "String NullPointerExceptions.hashmapNPE(HashMap,Object)", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int)", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[])", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.cursorFromContentResolverNPE(String)", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.sinkWithNeverNullSource()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.otherSinkWithNeverNullSource()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullableFieldNPE()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullableParamNPE(Object)", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.badCheckShouldCauseNPE()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.nullPointerExceptionArrayLength()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.someNPEAfterResourceLeak()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.derefNullableGetter()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "String NullPointerExceptions.testSystemGetPropertyArgument()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.testSystemGetPropertyReturn()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "NULL_DEREFERENCE", + "procedure": "void NullPointerExceptions.derefNull()", + "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.readerNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.bufferedReaderNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.inputStreamReaderNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.fileReaderNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.pushbackReaderNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter)", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ReaderLeaks.pipedReaderFalsePositive()", + "file": "codetoanalyze/java/infer/ReaderLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.fileOutputStreamNotClosed()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.fileOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.twoResources()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.twoResourcesServerSocket()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.twoResourcesRandomAccessFile()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.nestedBad1()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.nestedBad2()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectInputStreamClosedNestedBad()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectOutputStreamClosedNestedBad()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.zipFileLeakExceptionalBranch()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "boolean ResourceLeaks.jarFileNotClosed()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.fileInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.jarInputStreamLeak()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.nestedBadJarInputStream(File)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.jarOutputStreamLeak()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.nestedBadJarOutputStream()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.socketNotClosed()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.serverSocketNotClosed()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.openHttpURLConnectionNotDisconnected()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.openHttpsURLConnectionNotDisconnected()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "String ResourceLeaks.readInstallationFileBad(File)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "int ResourceLeaks.readConfigNotCloseStream(String)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.contextObtainTypedArrayAndLeak(Context)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.copyFileLeak(File,File)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.copyFileLeak(File,File)", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void ResourceLeaks.scannerNotClosed()", + "file": "codetoanalyze/java/infer/ResourceLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.writerNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.printWriterNotClosedAfterAppend()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.bufferedWriterNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.outputStreamWriterNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.fileWriterNotClosedAfterWrite()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader()", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + }, + { + "type": "RESOURCE_LEAK", + "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader)", + "file": "codetoanalyze/java/infer/WriterLeaks.java" + } +] diff --git a/scripts/test.sh b/scripts/test.sh index 8d7e9f432..72b6cfea5 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -48,3 +48,7 @@ buck clean rm -rf test.xml buck test ${TARGETS_TO_TEST[@]} $XML || exit 1 + +if [ -e "$INFER_BIN/InferJava" ]; then + ./scripts/build_integration_tests.py +fi