[tests] convert ant integration test to a Makefile

Summary:
Time for this framework to die. This converts the ant test to a Makefile. The
design is that each test or family of tests will have its own directory.

Do the necessary plumbing from the toplevel Makefile so that `make test` runs
the migrated tests.

Reviewed By: jberdine

Differential Revision: D4106298

fbshipit-source-id: 7bd694d
master
Jules Villard 8 years ago committed by Facebook Github Bot
parent c93bbbbbc5
commit b876364340

@ -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-%:

@ -1,21 +0,0 @@
<project default="compile">
<target name="clean">
<delete dir="ant_out"/>
</target>
<target name="compile">
<mkdir dir="ant_out"/>
<javac srcdir="codetoanalyze/java/infer" destdir="ant_out" includeantruntime="false">
<bootclasspath>
<pathelement location="../lib/java/android/android-19.jar"/>
</bootclasspath>
<classpath>
<pathelement location="../../dependencies/java/jackson/jackson-2.2.3.jar"/>
<pathelement location="../lib/java/models.jar"/>
<pathelement location="../annotations//annotations.jar"/>
</classpath>
</javac>
</target>
</project>

@ -0,0 +1,8 @@
{
"skip_translation": [
{
"language": "Java",
"source_contains": "_SHOULD_BE_SKIPPED_"
}
]
}

@ -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

@ -0,0 +1,21 @@
<project default="compile">
<target name="clean">
<delete dir="ant_out"/>
</target>
<target name="compile">
<mkdir dir="ant_out"/>
<javac srcdir="src/infer" destdir="ant_out" includeantruntime="false">
<bootclasspath>
<pathelement location="../../../lib/java/android/android-19.jar"/>
</bootclasspath>
<classpath>
<pathelement location="../../../../dependencies/java/jackson/jackson-2.2.3.jar"/>
<pathelement location="../../../lib/java/models.jar"/>
<pathelement location="../../../annotations//annotations.jar"/>
</classpath>
</javac>
</target>
</project>

@ -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

@ -0,0 +1 @@
../../codetoanalyze/java

@ -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)

@ -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()"
}
]
Loading…
Cancel
Save