diff --git a/Makefile b/Makefile index 1aa2ecf44..c7b3b07fd 100644 --- a/Makefile +++ b/Makefile @@ -6,14 +6,15 @@ # of patent rights can be found in the PATENTS file in the same directory. ROOT_DIR = . --include $(ROOT_DIR)/Makefile.config +include $(ROOT_DIR)/Makefile.config ifeq ($(IS_FACEBOOK_TREE),yes) -# With this makefile, all targets will default to have right env variables -# pointing to the sandbox - -include $(ROOT_DIR)/facebook//Makefile.env +# With this makefile, all targets will default to have right env variables pointing to the sandbox + include $(ROOT_DIR)/facebook//Makefile.env endif +BUILD_SYSTEMS_TESTS = ant + DIRECT_TESTS= ifeq ($(BUILD_C_ANALYZERS),yes) DIRECT_TESTS += c_errors_test c_frontend_test cpp_checkers_test cpp_errors_test cpp_frontend_test cpp_quandary_test @@ -104,10 +105,6 @@ endif .PHONY: test_oss_build test_oss_build: clang_plugin -# make sure we don't break the opensource build -ifeq ($(IS_FACEBOOK_TREE),yes) - $(MAKE) -C facebook clean -endif $(MAKE) -C $(SRC_DIR) EXTRA_DEPS=opensource TEST_BUILD_DIR=$(BUILD_DIR)/opensource test_build .PHONY: test_build @@ -127,9 +124,9 @@ frontend_replace: $(DIRECT_TESTS_REPLACE) define gen_direct_test_rule .PHONY: $(1) -$(1): +$(1): infer $(MAKE) -C \ - infer/tests/codetoanalyze/$(shell printf $(1) | cut -f 1 -d _)/$(shell printf $(1) | cut -f 2 -d _) \ + $(INFER_DIR)/tests/codetoanalyze/$(shell printf $(1) | cut -f 1 -d _)/$(shell printf $(1) | cut -f 2 -d _) \ $(shell printf $(1) | cut -f 3 -d _) endef @@ -138,19 +135,22 @@ $(foreach test,$(DIRECT_TESTS) $(DIRECT_TESTS_REPLACE),\ $(call gen_direct_test_rule,$(test)))) .PHONY: direct_tests -direct_tests: - $(MAKE) -j $(NCPU) -l $(NCPU) $(DIRECT_TESTS) +direct_tests: $(DIRECT_TESTS) -.PHONY: buck_test -buck_test: infer - $(MAKE) direct_tests - NO_BUCKD=1 ./infer/tests/build_systems/build_integration_tests.py +define gen_build_system_test_rule +.PHONY: $(1)_test +build_$(1)_test: infer + $(MAKE) -C $(INFER_DIR)/tests/build_systems/$(1) test +endef -.PHONY: buck_test_xml -buck_test_xml: infer - $(MAKE) direct_tests - buck test --xml test.xml # TODO: generate test.xml with test results - NO_BUCKD=1 ./infer/tests/build_systems/build_integration_tests.py +$(foreach test,$(BUILD_SYSTEMS_TESTS), $(eval $(call gen_build_system_test_rule,$(test)))) + +.PHONY: build_systems_tests +build_systems_tests: infer $(foreach test,$(BUILD_SYSTEMS_TESTS),build_$(test)_test) + NO_BUCKD=1 $(INFER_DIR)/tests/build_systems/build_integration_tests.py + +.PHONY: buck_test +buck_test: direct_tests build_systems_tests .PHONY: inferTraceBugs_test inferTraceBugs_test: infer @@ -170,7 +170,7 @@ inferTraceBugs_test: infer .PHONY: check_missing_mli check_missing_mli: - @for x in $$(find infer/src -name "*.ml" -or -name "*.re"); do \ + @for x in $$(find $(INFER_DIR)/src -name "*.ml" -or -name "*.re"); do \ test -f "$$x"i || echo Missing "$$x"i; done .PHONY: toplevel @@ -179,24 +179,20 @@ toplevel: infer .PHONY: inferScriptMode_test inferScriptMode_test: toplevel - INFER_REPL_BINARY=ocaml ./scripts/infer_repl ./infer/tests/repl/infer_batch_script.ml + INFER_REPL_BINARY=ocaml $(SCRIPT_DIR)/infer_repl $(INFER_DIR)/tests/repl/infer_batch_script.ml .PHONY: test test: test_build ocaml_unit_test buck_test inferTraceBugs_test inferScriptMode_test $(MAKE) -C $(SRC_DIR) mod_dep.dot -.PHONY: test_xml -test_xml: test_build ocaml_unit_test buck_test_xml inferTraceBugs_test - $(MAKE) -C $(SRC_DIR) mod_dep.dot - .PHONY: quick-test quick-test: test_this_build ocaml_unit_test .PHONY: test-replace test-replace: - @for file in $$(find infer/tests -name "*.exp.test"); do \ + @for file in $$(find $(INFER_DIR)/tests -name "*.exp.test"); do \ mv -f $$file $$(dirname $$file)/$$(basename -s .exp.test $$file).exp; done - @for file in $$(find infer/tests -name "*.test.dot"); do \ + @for file in $$(find $(INFER_DIR)/tests -name "*.test.dot"); do \ mv -f $$file $$(dirname $$file)/$$(basename -s .test.dot $$file).dot; done .PHONY: uninstall @@ -313,7 +309,6 @@ endif .PHONY: clean clean: - $(REMOVE) test.xml ifeq ($(IS_RELEASE_TREE),no) ifeq ($(BUILD_C_ANALYZERS),yes) $(MAKE) -C $(FCP_DIR) clean @@ -329,12 +324,12 @@ ifeq ($(IS_FACEBOOK_TREE),yes) $(MAKE) -C facebook clean endif $(MAKE) -C $(DEPENDENCIES_DIR)/ocamldot clean - find infer/tests -name '*.o' -or -name '*.o.sh' -delete + find $(INFER_DIR)/tests -name '*.o' -or -name '*.o.sh' -delete .PHONY: conf-clean conf-clean: clean - $(REMOVE) infer/lib/python/inferlib/*.pyc - $(REMOVE) infer/lib/python/inferlib/*/*.pyc + $(REMOVE) $(PYTHON_DIR)/inferlib/*.pyc + $(REMOVE) $(PYTHON_DIR)/inferlib/*/*.pyc $(REMOVE) .buckversion $(REMOVE) Makefile.config $(REMOVE) acinclude.m4 @@ -343,10 +338,10 @@ conf-clean: clean $(REMOVE) config.log $(REMOVE) config.status $(REMOVE) configure - $(REMOVE_DIR) infer/models/c/out/ - $(REMOVE_DIR) infer/models/cpp/out/ - $(REMOVE_DIR) infer/models/java/infer-out/ - $(REMOVE_DIR) infer/models/objc/out/ + $(REMOVE_DIR) $(MODELS_DIR)/c/out/ + $(REMOVE_DIR) $(MODELS_DIR)/cpp/out/ + $(REMOVE_DIR) $(MODELS_DIR)/java/infer-out/ + $(REMOVE_DIR) $(MODELS_DIR)/objc/out/ # print any variable for Makefile debugging print-%: diff --git a/infer/tests/build.xml b/infer/tests/build.xml deleted file mode 100644 index ea55d3672..000000000 --- a/infer/tests/build.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/infer/tests/build_systems/ant/.inferconfig b/infer/tests/build_systems/ant/.inferconfig new file mode 100644 index 000000000..72a3f0d9f --- /dev/null +++ b/infer/tests/build_systems/ant/.inferconfig @@ -0,0 +1,8 @@ +{ + "skip_translation": [ + { + "language": "Java", + "source_contains": "_SHOULD_BE_SKIPPED_" + } + ] +} diff --git a/infer/tests/build_systems/ant/Makefile b/infer/tests/build_systems/ant/Makefile new file mode 100644 index 000000000..53c380a96 --- /dev/null +++ b/infer/tests/build_systems/ant/Makefile @@ -0,0 +1,47 @@ +# Copyright (c) 2016 - present Facebook, Inc. +# All rights reserved. +# +# This source code is licensed under the BSD style license found in the +# LICENSE file in the root directory of this source tree. An additional grant +# of patent rights can be found in the PATENTS file in the same directory. + +ANALYZER = infer +ROOT_DIR = ../../../.. + +include $(ROOT_DIR)/Makefile.config + +default: compile + +JAVA_SOURCE_FILES = $(wildcard src/infer/*.java) +JAVA_CLASS_FILES = $(patsubst %.java,ant_out/%.class,$(JAVA_SOURCE_FILES)) + +INFERPRINT_OPTIONS = --issues-tests + +$(JAVA_CLASS_FILES): $(JAVA_SOURCE_FILES) + ant + +infer-out/report.json: $(INFER_BIN) $(JAVA_SOURCE_FILES) + $(call silent_on_success,\ + $(INFER_BIN) -a $(ANALYZER) -- ant) + +issues.exp.test: $(INFERPRINT_BIN) infer-out/report.json + $(INFERPRINT_BIN) -q -a $(ANALYZER) $(INFERPRINT_OPTIONS) issues.exp.test + LC_ALL=C sort -t: -k1,1 -k2n,2 -o issues.exp.test issues.exp.test + +.PHONY: compile +compile: $(JAVA_CLASS_FILES) + +.PHONY: analyze +analyze: infer-out/report.json + +.PHONY: print +print: issues.exp.test + +.PHONY: test +test: issues.exp.test + diff -u issues.exp issues.exp.test + +.PHONY: clean +clean: + ant clean + rm -rf issues.exp.test infer-out diff --git a/infer/tests/build_systems/ant/build.xml b/infer/tests/build_systems/ant/build.xml new file mode 100644 index 000000000..2a3f9c1f6 --- /dev/null +++ b/infer/tests/build_systems/ant/build.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/infer/tests/build_systems/ant/issues.exp b/infer/tests/build_systems/ant/issues.exp new file mode 100644 index 000000000..5faf3c7b1 --- /dev/null +++ b/infer/tests/build_systems/ant/issues.exp @@ -0,0 +1,253 @@ +src/infer/AnalysisStops.java, void AnalysisStops.accessPathInCalleeMayCauseFalseNegative(), 3, NULL_DEREFERENCE +src/infer/AnalysisStops.java, void AnalysisStops.callOnCastUndefinedObjMayCauseFalseNegative(), 3, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.callOnUndefinedObjMayCauseFalseNegative(), 2, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.castFailureOnUndefinedObjMayCauseFalseNegative(), 1, RETURN_VALUE_IGNORED +src/infer/AnalysisStops.java, void AnalysisStops.castFailureOnUndefinedObjMayCauseFalseNegative(), 2, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.fieldReadAferCastMayCauseFalseNegative(Iterator), 6, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative(), 3, NULL_DEREFERENCE +src/infer/AnalysisStops.java, void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative(), 3, NULL_DEREFERENCE +src/infer/AnalysisStops.java, void AnalysisStops.fieldReadOnUndefinedObjMayCauseFalseNegative(), 3, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.fieldWriteOnUndefinedObjMayCauseFalseNegative(), 3, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.heapFieldOfAngelicObjMayCauseFalseNegative(), 4, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.infiniteMaterializationMayCauseFalseNegative(boolean), 5, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.primitiveFieldOfAngelicObjMayCauseFalseNegative(), 3, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.primitiveFieldOfAngelicObjMayCauseFalseNegative(), 5, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.recursiveAngelicTypesMayCauseFalseNegative(), 4, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative(), 5, NULL_DEREFERENCE +src/infer/AnalysisStops.java, void AnalysisStops.skipPointerDerefMayCauseCalleeFalseNegative(), 2, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.skipPointerDerefMayCauseInterprocFalseNegative(), 2, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.skipPointerDerefMayCauseLocalFalseNegative(), 3, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.specInferenceMayFailAndCauseFalseNegative(boolean,Iterator), 2, RETURN_VALUE_IGNORED +src/infer/AnalysisStops.java, void AnalysisStops.specInferenceMayFailAndCauseFalseNegative(boolean,Iterator), 26, DIVIDE_BY_ZERO +src/infer/AnalysisStops.java, void AnalysisStops.specInferenceMayFailAndCauseFalseNegative(boolean,Iterator), 3, RETURN_VALUE_IGNORED +src/infer/ArrayOutOfBounds.java, int ArrayOutOfBounds.arrayOutOfBounds(), 2, ARRAY_OUT_OF_BOUNDS_L1 +src/infer/AutoGenerated.java, void AutoGenerated.npe(), 2, NULL_DEREFERENCE +src/infer/Builtins.java, void Builtins.causeError(Object), 2, NULL_DEREFERENCE +src/infer/Builtins.java, void Builtins.doNotBlockError(Object), 3, NULL_DEREFERENCE +src/infer/ClassCastExceptions.java, int ClassCastExceptions.classCastExceptionImplementsInterface(), 0, CLASS_CAST_EXCEPTION +src/infer/ClassCastExceptions.java, void ClassCastExceptions.classCastException(), 2, CLASS_CAST_EXCEPTION +src/infer/CloseableAsResourceExample.java, T CloseableAsResourceExample.sourceOfNullWithResourceLeak(), 1, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.failToCloseWithCloseQuietly(), 5, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.leakFoundWhenIndirectlyImplementingCloseable(), 1, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.notClosingCloseable(), 1, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.notClosingWrapper(), 2, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.skippedVritualCallDoesNotCloseResourceOnReceiver(), 2, RESOURCE_LEAK +src/infer/CloseableAsResourceExample.java, void CloseableAsResourceExample.withException(), 4, RESOURCE_LEAK +src/infer/ContextLeaks.java, ContextLeaks$Singleton ContextLeaks$Singleton.getInstance(Context), 4, CONTEXT_LEAK +src/infer/ContextLeaks.java, ContextLeaks$Singleton ContextLeaks.singletonLeak(), 1, CONTEXT_LEAK +src/infer/ContextLeaks.java, void ContextLeaks.directLeak(), 2, CONTEXT_LEAK +src/infer/ContextLeaks.java, void ContextLeaks.indirectLeak(), 4, CONTEXT_LEAK +src/infer/ContextLeaks.java, void ContextLeaks.leakAfterInstanceFieldWrite(), 3, CONTEXT_LEAK +src/infer/ContextLeaks.java, void ContextLeaks.nonStaticInnerClassLeak(), 2, CONTEXT_LEAK +src/infer/CursorLeaks.java, int CursorLeaks.completeDownloadNotClosed(DownloadManager), 8, RESOURCE_LEAK +src/infer/CursorLeaks.java, int CursorLeaks.cursorNotClosed(SQLiteDatabase), 4, RESOURCE_LEAK +src/infer/CursorLeaks.java, int CursorLeaks.getBucketCountNotClosed(), 10, RESOURCE_LEAK +src/infer/CursorLeaks.java, int CursorLeaks.getImageCountHelperNotClosed(String), 13, RESOURCE_LEAK +src/infer/CursorLeaks.java, void CursorLeaks.loadPrefsFromContentProviderNotClosed(), 11, RESOURCE_LEAK +src/infer/CursorLeaks.java, void CursorLeaks.queryUVMLegacyDbNotClosed(), 4, RESOURCE_LEAK +src/infer/CursorLeaks.java, void CursorLeaks.queryUVMLegacyDbNotClosed(), 4, RETURN_VALUE_IGNORED +src/infer/DivideByZero.java, int DivideByZero.callDivideByZeroInterProc(), 1, DIVIDE_BY_ZERO +src/infer/DivideByZero.java, int DivideByZero.divByZeroLocal(String), 3, DIVIDE_BY_ZERO +src/infer/DivideByZero.java, int DivideByZero.divideByZeroWithStaticField(), 2, DIVIDE_BY_ZERO +src/infer/DynamicDispatch.java, void DynamicDispatch.dynamicDispatchShouldNotCauseFalseNegativeEasy(), 3, NULL_DEREFERENCE +src/infer/DynamicDispatch.java, void DynamicDispatch.interfaceShouldNotCauseFalseNegativeEasy(), 3, NULL_DEREFERENCE +src/infer/DynamicDispatch.java, void DynamicDispatch.interfaceShouldNotCauseFalseNegativeHard(DynamicDispatch$Interface), 2, NULL_DEREFERENCE +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.checkedInputStreamClosedAfterSkip(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.cipherInputStreamClosedAfterRead(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.dataInputStreamClosedAfterReadBoolean(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead(), 8, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.digestInputStreamClosedAfterRead(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead(), 8, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.gzipInputStreamClosedAfterRead(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead(), 4, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.inflaterInputStreamClosedAfterAvailable(), 6, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead(), 5, RETURN_VALUE_IGNORED +src/infer/FilterInputStreamLeaks.java, void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead(), 7, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush(), 4, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush(), 7, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite(), 8, RESOURCE_LEAK +src/infer/FilterOutputStreamLeaks.java, void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite(), 6, RESOURCE_LEAK +src/infer/HashMapExample.java, Integer HashMapExample.getOrCreateInteger(HashMap,int), 8, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, int HashMapExample.getOneIntegerWithoutCheck(), 6, NULL_DEREFERENCE +src/infer/HashMapExample.java, void HashMapExample.containsIntegerTwiceThenGetTwice(HashMap), 10, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.containsIntegerTwiceThenGetTwice(HashMap), 9, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer), 10, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer), 11, NULL_DEREFERENCE +src/infer/HashMapExample.java, void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer), 11, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.putIntegerTwiceThenGetTwice(HashMap), 12, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.putIntegerTwiceThenGetTwice(HashMap), 13, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.putIntegerTwiceThenGetTwice(HashMap), 6, RETURN_VALUE_IGNORED +src/infer/HashMapExample.java, void HashMapExample.putIntegerTwiceThenGetTwice(HashMap), 7, RETURN_VALUE_IGNORED +src/infer/JunitAssertion.java, void JunitAssertion.inconsistentAssertion(JunitAssertion$A), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, String NullPointerExceptions.hashmapNPE(HashMap,Object), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, String NullPointerExceptions.nullTryLock(FileChannel), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, String NullPointerExceptions.testSystemGetPropertyArgument(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, String NullPointerExceptions.tryLockThrows(FileChannel), 6, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullListFiles(String), 3, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullPointerException(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullPointerExceptionInterProc(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullPointerExceptionWithAChainOfFields(NullPointerExceptions$C), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullPointerExceptionWithArray(), 3, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean), 5, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.badCheckShouldCauseNPE(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.cursorFromContentResolverNPE(String), 9, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.derefNull(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.derefNullableGetter(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.derefNullableRet(boolean), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.derefUndefNullableRet(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.derefUndefNullableRetWrapper(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.dereferenceAfterLoopOnList(NullPointerExceptions$L), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.dereferenceAfterUnlock1(Lock), 4, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.dereferenceAfterUnlock2(Lock), 6, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.noNullPointerExceptionAfterSkipFunction(), 4, RETURN_VALUE_IGNORED +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionArrayLength(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor(), 7, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor(), 6, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[]), 3, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionUnlessFrameFails(), 4, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullableFieldNPE(), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullableNonNullStringAfterTextUtilsIsEmptyCheckShouldNotCauseNPE(String), 2, RETURN_VALUE_IGNORED +src/infer/NullPointerExceptions.java, void NullPointerExceptions.nullableParamNPE(Object), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.optionalNPE(Optional), 1, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.otherSinkWithNeverNullSource(), 3, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.sinkWithNeverNullSource(), 3, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.someNPEAfterResourceLeak(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.stringConstantEqualsFalseNotNPE_FP(), 10, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.stringVarEqualsFalseNPE(), 5, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.testSystemGetPropertyReturn(), 2, NULL_DEREFERENCE +src/infer/NullPointerExceptions.java, void NullPointerExceptions.testSystemGetPropertyReturn(), 2, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.bufferedReaderClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.bufferedReaderNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.bufferedReaderNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.fileReaderClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.fileReaderNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.fileReaderNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.inputStreamReaderClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.inputStreamReaderNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.inputStreamReaderNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderClosed(PipedWriter), 5, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderFalsePositive(), 5, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderFalsePositive(), 5, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter), 5, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter), 7, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter(), 6, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter(), 8, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.pushbackReaderClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pushbackReaderNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.pushbackReaderNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ReaderLeaks.java, void ReaderLeaks.readerClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.readerNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ReaderLeaks.java, void ReaderLeaks.readerNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, String ResourceLeaks.readInstallationFileBad(File), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, boolean ResourceLeaks.jarFileNotClosed(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, int ResourceLeaks.fileOutputStreamTwoLeaks1(boolean), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, int ResourceLeaks.fileOutputStreamTwoLeaks1(boolean), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, int ResourceLeaks.readConfigNotCloseStream(String), 5, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity), 2, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.closedQuietlyWithCloseables(), 3, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.closedWithCloseables(), 3, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.contextObtainTypedArrayAndLeak(Context), 2, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.copyFileLeak(File,File), 11, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.copyFileLeak(File,File), 11, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.copyFileLeak(File,File), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.deflaterLeak(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileInputStreamClosed(), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.fileInputStreamNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.fileInputStreamNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileOutputStreamNotClosed(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileOutputStreamNotClosedAfterWrite(), 7, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileOutputStreamOneLeak(), 2, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileOutputStreamTwoLeaks2(), 2, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.fileOutputStreamTwoLeaks2(), 5, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.inflaterLeak(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.jarInputStreamLeak(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.jarOutputStreamLeak(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.nestedBad1(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.nestedBad2(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.nestedBadJarInputStream(File), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.nestedBadJarOutputStream(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamClosed(), 5, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamClosed2(), 5, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamClosedNestedBad(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamClosedNestedBad(), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamNotClosedAfterRead(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamNotClosedAfterRead(), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.objectInputStreamNotClosedAfterRead(), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectOutputStreamClosedNestedBad(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectOutputStreamNotClosedAfterWrite(), 4, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.objectOutputStreamNotClosedAfterWrite(), 7, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.openHttpURLConnectionNotDisconnected(), 7, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.openHttpsURLConnectionNotDisconnected(), 3, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory), 5, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.pipedInputStreamClosed(PipedOutputStream), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream), 4, RETURN_VALUE_IGNORED +src/infer/ResourceLeaks.java, void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream), 6, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite(), 7, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.scannerNotClosed(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.serverSocketNotClosed(), 12, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.socketNotClosed(), 1, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme), 2, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.twoResources(), 11, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.twoResourcesRandomAccessFile(), 10, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.twoResourcesServerSocket(), 10, RESOURCE_LEAK +src/infer/ResourceLeaks.java, void ResourceLeaks.zipFileLeakExceptionalBranch(), 5, RESOURCE_LEAK +src/infer/ReturnValueIgnored.java, void ReturnValueIgnored.returnValueIgnored(), 1, RETURN_VALUE_IGNORED +src/infer/TaintExample.java, InputStream TaintExample.socketIgnoreExceptionNoVerify(SSLSocketFactory), 9, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, InputStream TaintExample.socketNotVerifiedSimple(SSLSocketFactory), 3, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, InputStream TaintExample.socketVerifiedForgotToCheckRetval(SSLSocketFactory,HostnameVerifier,SSLSession), 6, RETURN_VALUE_IGNORED +src/infer/TaintExample.java, InputStream TaintExample.socketVerifiedForgotToCheckRetval(SSLSocketFactory,HostnameVerifier,SSLSession), 7, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, InputStream TaintExample.taintingShouldNotPreventInference1(SSLSocketFactory), 4, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, InputStream TaintExample.taintingShouldNotPreventInference2(SSLSocketFactory), 3, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, Socket TaintExample.callReadInputStreamCauseTaintError(SSLSocketFactory), 3, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.contentValuesPutWithTaintedString(ContentValues,SharedPreferences,String,String), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethods1(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethods2(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethods3(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethodsUndefined1(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethodsUndefined2(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.interprocTaintErrorWithModelMethodsUndefined3(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.simpleTaintErrorWithModelMethods(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.simpleTaintErrorWithModelMethodsUndefined(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testIntegritySinkAnnotReport(String), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testIntegritySourceAnnot(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testIntegritySourceInstanceFieldAnnot(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testIntegritySourceStaticFieldAnnot(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySinkAnnot1(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySinkAnnot3(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySourceAnnot(), 1, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySourceFieldAnnotPropagation(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySourceInstanceFieldAnnot(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/TaintExample.java, void TaintExample.testPrivacySourceStaticFieldAnnot(), 2, TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION +src/infer/WriterLeaks.java, void WriterLeaks.bufferedWriterNotClosedAfterWrite(), 7, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.fileWriterNotClosedAfterWrite(), 6, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.outputStreamWriterNotClosedAfterWrite(), 6, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader), 7, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader(), 8, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.printWriterNotClosedAfterAppend(), 4, RESOURCE_LEAK +src/infer/WriterLeaks.java, void WriterLeaks.writerNotClosedAfterWrite(), 6, RESOURCE_LEAK diff --git a/infer/tests/build_systems/ant/src b/infer/tests/build_systems/ant/src new file mode 120000 index 000000000..08d1883bd --- /dev/null +++ b/infer/tests/build_systems/ant/src @@ -0,0 +1 @@ +../../codetoanalyze/java \ No newline at end of file diff --git a/infer/tests/build_systems/build_integration_tests.py b/infer/tests/build_systems/build_integration_tests.py index ec75da74f..4cffbd1e5 100755 --- a/infer/tests/build_systems/build_integration_tests.py +++ b/infer/tests/build_systems/build_integration_tests.py @@ -42,6 +42,7 @@ from inferlib import config, issues, utils ROOT_DIR = os.path.join(SCRIPT_DIR, os.pardir, os.pardir, os.pardir) INFER_BIN = os.path.join(ROOT_DIR, 'infer', 'bin', 'infer') +INFERPRINT_BIN = os.path.join(ROOT_DIR, 'infer', 'bin', 'InferPrint') CLANG_BIN = os.path.join(ROOT_DIR, 'facebook-clang-plugins', 'clang', 'install', 'bin', 'clang') @@ -60,7 +61,6 @@ CODETOANALYZE_DIR = os.path.join(SCRIPT_DIR, 'codetoanalyze') EXPECTED_OUTPUTS_DIR = os.path.join(SCRIPT_DIR, 'expected_outputs') ALL_TESTS = [ - 'ant', 'assembly', 'buck', 'cmake', @@ -150,6 +150,24 @@ def run_analysis(clean_cmds, build_cmds, extra_check, should_fail, env=None): if exn.returncode != should_fail: raise + # Set this to True to create an issues.exp file using the + # results of the test. This is a temporary hack to aid + # migrating the tests from this file to Makefiles. It can be + # useful to compare the result of your migrated test with the + # issues.exp that this gives you. + if False: + inferprint_cmd = [INFERPRINT_BIN, '-q', '--issues-tests', + '-o', temp_out_dir] + extra_args + with tempfile.TemporaryFile( + mode='w', + suffix='.out', + prefix='issues.exp') as analysis_output: + try: + subprocess.check_call(inferprint_cmd, env=env) + except subprocess.CalledProcessError, exn: + if exn.returncode != should_fail: + raise + json_path = os.path.join(temp_out_dir, REPORT_JSON) found_errors = utils.load_json_from_path(json_path) extra_check(temp_out_dir) diff --git a/infer/tests/build_systems/expected_outputs/ant_report.json b/infer/tests/build_systems/expected_outputs/ant_report.json deleted file mode 100644 index 65c65ef12..000000000 --- a/infer/tests/build_systems/expected_outputs/ant_report.json +++ /dev/null @@ -1,847 +0,0 @@ -[ - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "Socket TaintExample.callReadInputStreamCauseTaintError(SSLSocketFactory)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.contentValuesPutWithTaintedString(ContentValues,SharedPreferences,String,String)" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "void ContextLeaks.directLeak()" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "ContextLeaks$Singleton ContextLeaks$Singleton.getInstance(Context)" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "void ContextLeaks.indirectLeak()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethods1()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethods2()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethods3()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethodsUndefined1()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethodsUndefined2()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.interprocTaintErrorWithModelMethodsUndefined3()" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "void ContextLeaks.leakAfterInstanceFieldWrite()" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "void ContextLeaks.nonStaticInnerClassLeak()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.simpleTaintErrorWithModelMethods()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.simpleTaintErrorWithModelMethodsUndefined()" - }, - { - "bug_type": "CONTEXT_LEAK", - "file": "codetoanalyze/java/infer/ContextLeaks.java", - "procedure": "ContextLeaks$Singleton ContextLeaks.singletonLeak()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "InputStream TaintExample.socketIgnoreExceptionNoVerify(SSLSocketFactory)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "InputStream TaintExample.socketNotVerifiedSimple(SSLSocketFactory)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "InputStream TaintExample.socketVerifiedForgotToCheckRetval(SSLSocketFactory,HostnameVerifier,SSLSession)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "InputStream TaintExample.taintingShouldNotPreventInference1(SSLSocketFactory)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "InputStream TaintExample.taintingShouldNotPreventInference2(SSLSocketFactory)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testIntegritySinkAnnotReport(String)" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testIntegritySourceAnnot()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testIntegritySourceInstanceFieldAnnot()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testIntegritySourceStaticFieldAnnot()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySinkAnnot1()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySinkAnnot3()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySourceAnnot()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySourceFieldAnnotPropagation()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySourceInstanceFieldAnnot()" - }, - { - "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "file": "codetoanalyze/java/infer/TaintExample.java", - "procedure": "void TaintExample.testPrivacySourceStaticFieldAnnot()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.badCheckShouldCauseNPE()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.bufferedReaderNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.bufferedWriterNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "int CursorLeaks.completeDownloadNotClosed(DownloadManager)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.contextObtainTypedArrayAndLeak(Context)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.copyFileLeak(File,File)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.copyFileLeak(File,File)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.cursorFromContentResolverNPE(String)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "int CursorLeaks.cursorNotClosed(SQLiteDatabase)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.deflaterLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.derefNull()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.derefNullableGetter()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.derefNullableRet(boolean)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.derefUndefNullableRet()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.derefUndefNullableRetWrapper()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.dereferenceAfterLoopOnList(NullPointerExceptions$L)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.dereferenceAfterUnlock1(Lock)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.dereferenceAfterUnlock2(Lock)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/Builtins.java", - "procedure": "void Builtins.doNotBlockError(Object)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/DynamicDispatch.java", - "procedure": "void DynamicDispatch.dynamicDispatchShouldNotCauseFalseNegativeEasy()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.failToCloseWithCloseQuietly()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/AnalysisStops.java", - "procedure": "void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/AnalysisStops.java", - "procedure": "void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileOutputStreamNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileOutputStreamOneLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks1(boolean)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks1(boolean)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileOutputStreamTwoLeaks2()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.fileOutputStreamTwoLeaks2()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.fileReaderNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.fileWriterNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "int CursorLeaks.getBucketCountNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "int CursorLeaks.getImageCountHelperNotClosed(String)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/HashMapExample.java", - "procedure": "int HashMapExample.getOneIntegerWithoutCheck()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/HashMapExample.java", - "procedure": "void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "String NullPointerExceptions.hashmapNPE(HashMap,Object)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.inflaterLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.inputStreamReaderNotClosedAfterRead()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/DynamicDispatch.java", - "procedure": "void DynamicDispatch.interfaceShouldNotCauseFalseNegativeEasy()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/DynamicDispatch.java", - "procedure": "void DynamicDispatch.interfaceShouldNotCauseFalseNegativeHard(DynamicDispatch$Interface)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "boolean ResourceLeaks.jarFileNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.jarInputStreamLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.jarOutputStreamLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.leakFoundWhenIndirectlyImplementingCloseable()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "void CursorLeaks.loadPrefsFromContentProviderNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.nestedBad1()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.nestedBad2()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.nestedBadJarInputStream(File)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.nestedBadJarOutputStream()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.notClosingCloseable()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.notClosingWrapper()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/AutoGenerated.java", - "procedure": "void AutoGenerated.npe()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "int NullPointerExceptions.nullListFiles(String)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "int NullPointerExceptions.nullPointerException()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionArrayLength()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[])" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "int NullPointerExceptions.nullPointerExceptionInterProc()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionUnlessFrameFails()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "String NullPointerExceptions.nullTryLock(FileChannel)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullableFieldNPE()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.nullableParamNPE(Object)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectInputStreamClosedNestedBad()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectOutputStreamClosedNestedBad()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.openHttpURLConnectionNotDisconnected()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.openHttpsURLConnectionNotDisconnected()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.optionalNPE(Optional)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.otherSinkWithNeverNullSource()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.outputStreamWriterNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.pipedReaderFalsePositive()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", - "procedure": "void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.printWriterNotClosedAfterAppend()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", - "procedure": "void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.pushbackReaderNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CursorLeaks.java", - "procedure": "void CursorLeaks.queryUVMLegacyDbNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "int ResourceLeaks.readConfigNotCloseStream(String)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "String ResourceLeaks.readInstallationFileBad(File)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ReaderLeaks.java", - "procedure": "void ReaderLeaks.readerNotClosedAfterRead()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.scannerNotClosed()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.serverSocketNotClosed()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.sinkWithNeverNullSource()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/AnalysisStops.java", - "procedure": "void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.skippedVritualCallDoesNotCloseResourceOnReceiver()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.socketNotClosed()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.someNPEAfterResourceLeak()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "T CloseableAsResourceExample.sourceOfNullWithResourceLeak()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.stringConstantEqualsFalseNotNPE_FP()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.stringVarEqualsFalseNPE()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "String NullPointerExceptions.testSystemGetPropertyArgument()" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "void NullPointerExceptions.testSystemGetPropertyReturn()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme)" - }, - { - "bug_type": "NULL_DEREFERENCE", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java", - "procedure": "String NullPointerExceptions.tryLockThrows(FileChannel)" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.twoResources()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.twoResourcesRandomAccessFile()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.twoResourcesServerSocket()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", - "procedure": "void CloseableAsResourceExample.withException()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/WriterLeaks.java", - "procedure": "void WriterLeaks.writerNotClosedAfterWrite()" - }, - { - "bug_type": "RESOURCE_LEAK", - "file": "codetoanalyze/java/infer/ResourceLeaks.java", - "procedure": "void ResourceLeaks.zipFileLeakExceptionalBranch()" - } -] \ No newline at end of file