From d03dcb69617590f518aa5cc805cd6dc46d993911 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Tue, 10 Nov 2015 10:01:12 -0800 Subject: [PATCH] generate json natively Summary: public Use InferPrint to generate infer-out/report.json instead of converting infer-out/report.csv. The json may soon contain more info than the CSV. Reviewed By: jeremydubreil Differential Revision: D2603775 fb-gh-sync-id: f141dfe --- examples/android_hello/gradle_report.json | 8 +- infer/lib/python/BuckAnalyze | 52 +- infer/lib/python/inferTraceBugs | 6 +- infer/lib/python/inferlib/infer.py | 91 ++- infer/lib/python/inferlib/utils.py | 30 +- infer/tests/ant_report.json | 572 +++++++-------- infer/tests/buck_report.json | 858 +++++++++++----------- 7 files changed, 825 insertions(+), 792 deletions(-) diff --git a/examples/android_hello/gradle_report.json b/examples/android_hello/gradle_report.json index b23c8201e..7fb6a6a24 100644 --- a/examples/android_hello/gradle_report.json +++ b/examples/android_hello/gradle_report.json @@ -1,12 +1,12 @@ [ { - "type": "NULL_DEREFERENCE", "procedure": "void MainActivity.onCreate(Bundle)", - "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java" + "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", "procedure": "void MainActivity.writeToFile()", - "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java" + "file": "app/src/main/java/infer/inferandroidexample/MainActivity.java", + "bug_type": "RESOURCE_LEAK" } ] \ No newline at end of file diff --git a/infer/lib/python/BuckAnalyze b/infer/lib/python/BuckAnalyze index a865864bc..f01be97d1 100755 --- a/infer/lib/python/BuckAnalyze +++ b/infer/lib/python/BuckAnalyze @@ -40,7 +40,10 @@ BUCK_CONFIG_BACKUP = '.buckconfig.local.backup_generated_by_infer' DEFAULT_BUCK_OUT = os.path.join(os.getcwd(), 'buck-out') DEFAULT_BUCK_OUT_GEN = os.path.join(DEFAULT_BUCK_OUT, 'gen') -INFER_REPORT = os.path.join(utils.BUCK_INFER_OUT, utils.CSV_REPORT_FILENAME) +INFER_CSV_REPORT = os.path.join(utils.BUCK_INFER_OUT, + utils.CSV_REPORT_FILENAME) +INFER_JSON_REPORT = os.path.join(utils.BUCK_INFER_OUT, + utils.JSON_REPORT_FILENAME) INFER_STATS = os.path.join(utils.BUCK_INFER_OUT, utils.STATS_FILENAME) INFER_SCRIPT = """\ @@ -332,24 +335,19 @@ def load_stats(opened_jar): raise NotFoundInJar -def load_report(opened_jar): +def load_csv_report(opened_jar): try: - sio = io.StringIO(opened_jar.read(INFER_REPORT).decode()) + sio = io.StringIO(opened_jar.read(INFER_CSV_REPORT).decode()) return list(csv.reader(sio)) except KeyError as e: raise NotFoundInJar -def rows_remove_duplicates(rows): - seen = {} - result = [] - for row in rows: - t = tuple(row) - if t in seen: - continue - seen[t] = 1 - result.append(row) - return result +def load_json_report(opened_jar): + try: + return json.loads(opened_jar.read(INFER_JSON_REPORT).decode()) + except KeyError as e: + raise NotFoundInJar def collect_results(args, start_time): @@ -361,7 +359,8 @@ def collect_results(args, start_time): with open(os.path.join(args.infer_out, ANALYSIS_SUMMARY_OUTPUT), 'w') as f: f.write(buck_stats) - all_rows = [] + all_csv_rows = set() + all_json_rows = set() headers = [] stats = init_stats(args, start_time) @@ -398,10 +397,15 @@ def collect_results(args, start_time): old_value = stats[type_k].get(key, 0) stats[type_k][key] = old_value + value - rows = load_report(jar) - if len(rows) > 0: - headers.append(rows[0]) - all_rows.extend(rows[1:]) + csv_rows = load_csv_report(jar) + if len(csv_rows) > 0: + headers.append(csv_rows[0]) + for row in csv_rows[1:]: + all_csv_rows.add(tuple(row)) + + json_rows = load_json_report(jar) + for row in json_rows: + all_json_rows.add(json.dumps(row)) # Override normals stats['normal'].update(target_stats.get('normal', {})) @@ -411,6 +415,7 @@ def collect_results(args, start_time): logging.warn('Bad zip file %s', path) csv_report = os.path.join(args.infer_out, utils.CSV_REPORT_FILENAME) + json_report = os.path.join(args.infer_out, utils.JSON_REPORT_FILENAME) bugs_out = os.path.join(args.infer_out, utils.BUGS_FILENAME) if len(headers) == 0: @@ -431,11 +436,16 @@ def collect_results(args, start_time): with open(csv_report, 'w') as report: writer = csv.writer(report) - writer.writerows([headers[0]] + rows_remove_duplicates(all_rows)) + all_csv_rows = [list(row) for row in all_csv_rows] + writer.writerows([headers[0]] + all_csv_rows) report.flush() - # export the CSV rows to JSON - utils.create_json_report(args.infer_out) + with open(json_report, 'w') as report: + json_string = '[' + json_string += ','.join(all_json_rows) + json_string += ']' + report.write(json_string) + report.flush() print('\n') infer.print_errors(csv_report, bugs_out) diff --git a/infer/lib/python/inferTraceBugs b/infer/lib/python/inferTraceBugs index ec5a1faeb..b156d4b1f 100755 --- a/infer/lib/python/inferTraceBugs +++ b/infer/lib/python/inferTraceBugs @@ -136,8 +136,7 @@ class Tracer(object): self.build_node(node) def build_report(self, report): - traces = json.loads(report[utils.JSON_INDEX_TRACE]) - self.build_trace(traces[utils.JSON_INDEX_TRACE]) + self.build_trace(report[utils.JSON_INDEX_TRACE]) def __str__(self): return str(self.indenter) @@ -148,8 +147,7 @@ class Selector(object): self.args = args def has_trace(report): - trace = json.loads(report[utils.JSON_INDEX_TRACE]) - return len(trace[utils.JSON_INDEX_TRACE]) > 0 + return len(report[utils.JSON_INDEX_TRACE]) > 0 self.reports = [report for report in reports if has_trace(report)] def show_choices(self): diff --git a/infer/lib/python/inferlib/infer.py b/infer/lib/python/inferlib/infer.py index 6174ab8b2..79f069388 100644 --- a/infer/lib/python/inferlib/infer.py +++ b/infer/lib/python/inferlib/infer.py @@ -242,7 +242,7 @@ def help_exit(message): exit(1) -def compare_rows(row_1, row_2): +def compare_csv_rows(row_1, row_2): filename_1 = row_1[utils.CSV_INDEX_FILENAME] filename_2 = row_2[utils.CSV_INDEX_FILENAME] if filename_1 < filename_2: @@ -255,20 +255,20 @@ def compare_rows(row_1, row_2): return line_1 - line_2 -def should_report(analyzer, row): - error_kind = row[utils.CSV_INDEX_KIND] - error_type = row[utils.CSV_INDEX_TYPE] - error_bucket = '' # can be updated later once we extract it from qualifier +def compare_json_rows(row_1, row_2): + filename_1 = row_1[utils.JSON_INDEX_FILENAME] + filename_2 = row_2[utils.JSON_INDEX_FILENAME] + if filename_1 < filename_2: + return -1 + elif filename_1 > filename_2: + return 1 + else: + line_1 = int(row_1[utils.JSON_INDEX_LINE]) + line_2 = int(row_2[utils.JSON_INDEX_LINE]) + return line_1 - line_2 - try: - qualifier_xml = ET.fromstring(row[utils.CSV_INDEX_QUALIFIER_TAGS]) - if qualifier_xml.tag == utils.QUALIFIER_TAGS: - bucket = qualifier_xml.find(utils.BUCKET_TAGS) - if bucket is not None: - error_bucket = bucket.text - except ET.ParseError: - pass # this will skip any invalid xmls +def should_report(analyzer, error_kind, error_type, error_bucket): # config what to print is listed below error_kinds = [ERROR, WARNING] @@ -314,6 +314,55 @@ def should_report(analyzer, row): return False +def should_report_csv(analyzer, row): + error_kind = row[utils.CSV_INDEX_KIND] + error_type = row[utils.CSV_INDEX_TYPE] + error_bucket = '' # can be updated later once we extract it from qualifier + + try: + qualifier_xml = ET.fromstring(row[utils.CSV_INDEX_QUALIFIER_TAGS]) + if qualifier_xml.tag == utils.QUALIFIER_TAGS: + bucket = qualifier_xml.find(utils.BUCKET_TAGS) + if bucket is not None: + error_bucket = bucket.text + except ET.ParseError: + pass # this will skip any invalid xmls + + return should_report(analyzer, error_kind, error_type, error_bucket) + + +def should_report_json(analyzer, row): + error_kind = row[utils.JSON_INDEX_KIND] + error_type = row[utils.JSON_INDEX_TYPE] + error_bucket = '' # can be updated later once we extract it from qualifier + + for qual_tag in row[utils.QUALIFIER_TAGS]: + if qual_tag['tag'] == utils.BUCKET_TAGS: + error_bucket = qual_tag['value'] + break + + return should_report(analyzer, error_kind, error_type, error_bucket) + + +def clean_json(args, json_report): + collected_rows = [] + with open(json_report, 'r') as file_in: + rows = json.load(file_in) + for row in rows: + filename = row[utils.JSON_INDEX_FILENAME] + if os.path.isfile(filename): + if args.no_filtering or should_report_json(args.analyzer, row): + collected_rows.append(row) + collected_rows = sorted( + collected_rows, + cmp=compare_json_rows) + temporary_file = tempfile.mktemp() + with open(temporary_file, 'w') as file_out: + json.dump(collected_rows, file_out) + file_out.flush() + shutil.move(temporary_file, json_report) + + def clean_csv(args, csv_report): collected_rows = [] with open(csv_report, 'r') as file_in: @@ -325,11 +374,12 @@ def clean_csv(args, csv_report): for row in rows[1:]: filename = row[utils.CSV_INDEX_FILENAME] if os.path.isfile(filename): - if args.no_filtering or should_report(args.analyzer, row): + if args.no_filtering \ + or should_report_csv(args.analyzer, row): collected_rows.append(row) collected_rows = sorted( collected_rows, - cmp=compare_rows) + cmp=compare_csv_rows) collected_rows = [rows[0]] + collected_rows temporary_file = tempfile.mktemp() with open(temporary_file, 'w') as file_out: @@ -632,10 +682,10 @@ class Infer: """Report statistics about the computation and create a CSV file containing the list or errors found during the analysis""" - csv_report = os.path.join(self.args.infer_out, - utils.CSV_REPORT_FILENAME) - bugs_out = os.path.join(self.args.infer_out, - utils.BUGS_FILENAME) + out_dir = self.args.infer_out + csv_report = os.path.join(out_dir, utils.CSV_REPORT_FILENAME) + json_report = os.path.join(out_dir, utils.JSON_REPORT_FILENAME) + bugs_out = os.path.join(out_dir, utils.BUGS_FILENAME) procs_report = os.path.join(self.args.infer_out, 'procs.csv') infer_print_cmd = [utils.get_cmd_in_bin_dir('InferPrint')] @@ -643,6 +693,7 @@ class Infer: '-q', '-results_dir', self.args.infer_out, '-bugs', csv_report, + '-bugs_json', json_report, '-procs', procs_report, '-analyzer', self.args.analyzer ] @@ -657,8 +708,8 @@ class Infer: + infer_print_cmd) else: clean_csv(self.args, csv_report) + clean_json(self.args, json_report) self.update_stats_with_warnings(csv_report) - utils.create_json_report(self.args.infer_out) print('\n') if not self.args.buck: diff --git a/infer/lib/python/inferlib/utils.py b/infer/lib/python/inferlib/utils.py index e07e9f27c..636e76851 100644 --- a/infer/lib/python/inferlib/utils.py +++ b/infer/lib/python/inferlib/utils.py @@ -82,8 +82,8 @@ JSON_INDEX_PROCEDURE = 'procedure' JSON_INDEX_QUALIFIER = 'qualifier' JSON_INDEX_QUALIFIER_TAGS = 'qualifier_tags' JSON_INDEX_SEVERITY = 'file' -JSON_INDEX_TYPE = 'type' -JSON_INDEX_TRACE = 'trace' +JSON_INDEX_TYPE = 'bug_type' +JSON_INDEX_TRACE = 'bug_trace' JSON_INDEX_TRACE_LEVEL = 'level' JSON_INDEX_TRACE_FILENAME = 'filename' JSON_INDEX_TRACE_LINE = 'line_number' @@ -391,32 +391,6 @@ def invoke_function_with_callbacks( raise -def save_as_json(data, filename): - with open(filename, 'w') as file_out: - json.dump(data, file_out, indent=2) - - -def merge_json_reports(report_paths, merged_report_path): - # TODO: use streams instead of loading the entire json in memory - json_data = [] - for json_path in report_paths: - with open(json_path, 'r') as fd: - json_data = json_data + json.loads(fd.read()) - save_as_json(json_data, merged_report_path) - - -def create_json_report(out_dir): - csv_report_filename = os.path.join(out_dir, CSV_REPORT_FILENAME) - json_report_filename = os.path.join(out_dir, JSON_REPORT_FILENAME) - rows = [] - with open(csv_report_filename, 'r') as file_in: - reader = csv.reader(file_in) - rows = [row for row in reader] - headers = rows[0] - issues = [dict(zip(headers, row)) for row in rows[1:]] - save_as_json(issues, json_report_filename) - - def get_plural(_str, count): plural_str = _str if count == 1 else _str + 's' return '%d %s' % (count, plural_str) diff --git a/infer/tests/ant_report.json b/infer/tests/ant_report.json index cdf89719b..e818fefd8 100644 --- a/infer/tests/ant_report.json +++ b/infer/tests/ant_report.json @@ -1,717 +1,717 @@ [ { - "type": "NULL_DEREFERENCE", "procedure": "void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative()", - "file": "codetoanalyze/java/infer/AnalysisStops.java" + "file": "codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative()", - "file": "codetoanalyze/java/infer/AnalysisStops.java" + "file": "codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative()", - "file": "codetoanalyze/java/infer/AnalysisStops.java" + "file": "codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void AutoGenerated.npe()", - "file": "codetoanalyze/java/infer/AutoGenerated.java" + "file": "codetoanalyze/java/infer/AutoGenerated.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void Builtins.doNotBlockError(Object)", - "file": "codetoanalyze/java/infer/Builtins.java" + "file": "codetoanalyze/java/infer/Builtins.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", "procedure": "void CloseableAsResourceExample.notClosingCloseable()", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void CloseableAsResourceExample.withException()", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void CloseableAsResourceExample.notClosingWrapper()", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void CloseableAsResourceExample.failToCloseWithCloseQuietly()", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "T CloseableAsResourceExample.sourceOfNullWithResourceLeak()", - "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java" + "file": "codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "void ContextLeaks.directLeak()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "void ContextLeaks.indirectLeak()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "void ContextLeaks.nonStaticInnerClassLeak()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "void ContextLeaks.leakAfterInstanceFieldWrite()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "ContextLeaks$Singleton ContextLeaks.singletonLeak()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "CONTEXT_LEAK", "procedure": "void ContextLeaks.indirectHandlerLeak()", - "file": "codetoanalyze/java/infer/ContextLeaks.java" + "file": "codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int CursorLeaks.cursorNotClosed(SQLiteDatabase)", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int CursorLeaks.getImageCountHelperNotClosed(String)", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int CursorLeaks.getBucketCountNotClosed()", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void CursorLeaks.queryUVMLegacyDbNotClosed()", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int CursorLeaks.completeDownloadNotClosed(DownloadManager)", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void CursorLeaks.loadPrefsFromContentProviderNotClosed()", - "file": "codetoanalyze/java/infer/CursorLeaks.java" + "file": "codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "file": "codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", "procedure": "int HashMapExample.getOneIntegerWithoutCheck()", - "file": "codetoanalyze/java/infer/HashMapExample.java" + "file": "codetoanalyze/java/infer/HashMapExample.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer)", - "file": "codetoanalyze/java/infer/HashMapExample.java" + "file": "codetoanalyze/java/infer/HashMapExample.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "int NullPointerExceptions.nullPointerException()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "int NullPointerExceptions.nullPointerExceptionInterProc()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean)", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionUnlessFrameFails()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "String NullPointerExceptions.hashmapNPE(HashMap,Object)", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int)", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[])", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.cursorFromContentResolverNPE(String)", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.sinkWithNeverNullSource()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.otherSinkWithNeverNullSource()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullableFieldNPE()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullableParamNPE(Object)", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.badCheckShouldCauseNPE()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.nullPointerExceptionArrayLength()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.someNPEAfterResourceLeak()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.derefNullableGetter()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "String NullPointerExceptions.testSystemGetPropertyArgument()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.testSystemGetPropertyReturn()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.derefNull()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", "procedure": "void NullPointerExceptions.shouldNotReportNPE()", - "file": "codetoanalyze/java/infer/NullPointerExceptions.java" + "file": "codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.readerNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.bufferedReaderNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.inputStreamReaderNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.fileReaderNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.pushbackReaderNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter)", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ReaderLeaks.pipedReaderFalsePositive()", - "file": "codetoanalyze/java/infer/ReaderLeaks.java" + "file": "codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.fileOutputStreamNotClosed()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.fileOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.twoResources()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.twoResourcesServerSocket()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.twoResourcesRandomAccessFile()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.nestedBad1()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.nestedBad2()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectInputStreamClosedNestedBad()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectOutputStreamClosedNestedBad()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.zipFileLeakExceptionalBranch()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "boolean ResourceLeaks.jarFileNotClosed()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.fileInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.jarInputStreamLeak()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.nestedBadJarInputStream(File)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.jarOutputStreamLeak()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.nestedBadJarOutputStream()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.socketNotClosed()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.serverSocketNotClosed()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.openHttpURLConnectionNotDisconnected()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.openHttpsURLConnectionNotDisconnected()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "String ResourceLeaks.readInstallationFileBad(File)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "int ResourceLeaks.readConfigNotCloseStream(String)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.contextObtainTypedArrayAndLeak(Context)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.copyFileLeak(File,File)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.copyFileLeak(File,File)", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void ResourceLeaks.scannerNotClosed()", - "file": "codetoanalyze/java/infer/ResourceLeaks.java" + "file": "codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetHostEquals(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetHostCompareTo(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetHostEndsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetHostStartsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetAuthoriyEquals(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetAuthorityCompareTo(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetAuthorityEndsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetAuthorityStartsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetProtocolEquals(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetProtocolCompareTo(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetProtocolEndsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintGetProtocolStartsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToExternalFormEquals(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToExternalFormCompareTo(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToExternalFormEndsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToExternalFormStartsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToStringEquals(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToStringCompareTo(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToStringEndsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", "procedure": "String TaintExample.taintToStringStartsWith(String)", - "file": "codetoanalyze/java/infer/TaintExample.java" + "file": "codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.writerNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.printWriterNotClosedAfterAppend()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.bufferedWriterNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.outputStreamWriterNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.fileWriterNotClosedAfterWrite()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader()", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader)", - "file": "codetoanalyze/java/infer/WriterLeaks.java" + "file": "codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" } ] \ No newline at end of file diff --git a/infer/tests/buck_report.json b/infer/tests/buck_report.json index 87346b46d..6ab2c793a 100644 --- a/infer/tests/buck_report.json +++ b/infer/tests/buck_report.json @@ -1,717 +1,717 @@ [ { - "type": "NULL_DEREFERENCE", - "procedure": "void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative()", - "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java" + "procedure": "String TaintExample.taintGetProtocolStartsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative()", - "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java" + "procedure": "String TaintExample.taintToStringEquals(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative()", - "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java" + "procedure": "void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void AutoGenerated.npe()", - "file": "infer/tests/codetoanalyze/java/infer/AutoGenerated.java" + "procedure": "String TaintExample.taintGetProtocolEndsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void Builtins.doNotBlockError(Object)", - "file": "infer/tests/codetoanalyze/java/infer/Builtins.java" + "procedure": "void WriterLeaks.fileWriterNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CloseableAsResourceExample.notClosingCloseable()", - "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java" + "procedure": "void CloseableAsResourceExample.failToCloseWithCloseQuietly()", + "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CloseableAsResourceExample.withException()", - "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java" + "procedure": "void NullPointerExceptions.otherSinkWithNeverNullSource()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CloseableAsResourceExample.notClosingWrapper()", - "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java" + "procedure": "void WriterLeaks.bufferedWriterNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CloseableAsResourceExample.failToCloseWithCloseQuietly()", - "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java" + "procedure": "void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "T CloseableAsResourceExample.sourceOfNullWithResourceLeak()", - "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java" + "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", - "procedure": "void ContextLeaks.directLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", - "procedure": "void ContextLeaks.indirectLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "String TaintExample.taintToExternalFormStartsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "CONTEXT_LEAK", - "procedure": "void ContextLeaks.nonStaticInnerClassLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", - "procedure": "void ContextLeaks.leakAfterInstanceFieldWrite()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", - "procedure": "ContextLeaks$Singleton ContextLeaks.singletonLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "CONTEXT_LEAK", - "procedure": "void ContextLeaks.indirectHandlerLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java" + "procedure": "void NullPointerExceptions.derefNull()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "int CursorLeaks.cursorNotClosed(SQLiteDatabase)", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "int CursorLeaks.getImageCountHelperNotClosed(String)", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "int CursorLeaks.getBucketCountNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "String TaintExample.taintToStringStartsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CursorLeaks.queryUVMLegacyDbNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "T CloseableAsResourceExample.sourceOfNullWithResourceLeak()", + "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "int CursorLeaks.completeDownloadNotClosed(DownloadManager)", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "void ResourceLeaks.twoResourcesRandomAccessFile()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void CursorLeaks.loadPrefsFromContentProviderNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java" + "procedure": "boolean ResourceLeaks.jarFileNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "String NullPointerExceptions.testSystemGetPropertyArgument()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.checkedInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.cipherInputStreamNotClosedAfterSkip()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ResourceLeaks.copyFileLeak(File,File)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ReaderLeaks.fileReaderNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void WriterLeaks.printWriterNotClosedAfterAppend()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ReaderLeaks.readerNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ReaderLeaks.inputStreamReaderNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean)", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ReaderLeaks.pipedReaderFalsePositive()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterInputStreamLeaks.pushbackInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java" + "procedure": "void ContextLeaks.leakAfterInstanceFieldWrite()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "String ResourceLeaks.readInstallationFileBad(File)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer)", + "file": "infer/tests/codetoanalyze/java/infer/HashMapExample.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void FilterInputStreamLeaks.dataInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.fileOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.deflaterOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.nestedBad1()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.digestOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.fileInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.openHttpURLConnectionNotDisconnected()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.gzipOutputStreamNotClosedAfterFlush()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void ResourceLeaks.zipFileLeakExceptionalBranch()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java" + "procedure": "void AutoGenerated.npe()", + "file": "infer/tests/codetoanalyze/java/infer/AutoGenerated.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "int HashMapExample.getOneIntegerWithoutCheck()", - "file": "infer/tests/codetoanalyze/java/infer/HashMapExample.java" + "procedure": "void ResourceLeaks.serverSocketNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void HashMapExample.getTwoIntegersWithOneCheck(Integer,Integer)", - "file": "infer/tests/codetoanalyze/java/infer/HashMapExample.java" + "procedure": "int CursorLeaks.completeDownloadNotClosed(DownloadManager)", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "int NullPointerExceptions.nullPointerException()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.twoResourcesServerSocket()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "int NullPointerExceptions.nullPointerExceptionInterProc()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "int NullPointerExceptions.nullPointerExceptionWithExceptionHandling(boolean)", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.nestedBadJarInputStream(File)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "int NullPointerExceptions.nullPointerException()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.twoResources()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.scannerNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.contextObtainTypedArrayAndLeak(Context)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionUnlessFrameFails()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void AnalysisStops.fieldReadInCalleeMayCauseFalseNegative()", + "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "String NullPointerExceptions.hashmapNPE(HashMap,Object)", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionArrayLength()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int)", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullObjectParameter()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[])", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "String TaintExample.taintGetHostEndsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.cursorFromContentResolverNPE(String)", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.socketNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "String TaintExample.taintGetAuthorityEndsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.sinkWithNeverNullSource()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void FilterInputStreamLeaks.bufferedInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.otherSinkWithNeverNullSource()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullableFieldNPE()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.jarOutputStreamLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullableParamNPE(Object)", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void FilterOutputStreamLeaks.checkedOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.badCheckShouldCauseNPE()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter)", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.nullPointerExceptionArrayLength()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "String TaintExample.taintToStringCompareTo(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions$$$Class$Name$With$Dollars.npeWithDollars()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void ResourceLeaks.fileOutputStreamNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.someNPEAfterResourceLeak()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "int ResourceLeaks.readConfigNotCloseStream(String)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.derefNullableGetter()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionFromFaillingResourceConstructor()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "String NullPointerExceptions.testSystemGetPropertyArgument()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "int NullPointerExceptions.nullPointerExceptionInterProc()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.testSystemGetPropertyReturn()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void NullPointerExceptions.nullableFieldNPE()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "NULL_DEREFERENCE", - "procedure": "void NullPointerExceptions.derefNull()", - "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java" + "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.readerNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "String TaintExample.taintGetHostEquals(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.bufferedReaderNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "void FilterInputStreamLeaks.deflaterInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.inputStreamReaderNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "String TaintExample.taintGetHostCompareTo(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.fileReaderNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "void FilterOutputStreamLeaks.dataOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.pushbackReaderNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "int CursorLeaks.getBucketCountNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionUnlessFrameFails()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConnect(PipedWriter)", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "void ReaderLeaks.bufferedReaderNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ReaderLeaks.pipedReaderFalsePositive()", - "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java" + "procedure": "void NullPointerExceptions.cursorFromContentResolverNPE(String)", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.fileOutputStreamNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintToExternalFormCompareTo(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.fileOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void NullPointerExceptions.testSystemGetPropertyReturn()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintGetProtocolCompareTo(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterInputStreamLeaks.gzipInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.twoResources()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.twoResourcesServerSocket()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionInArrayLengthLoop(java.lang.Object[])", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.twoResourcesRandomAccessFile()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintGetHostStartsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.nestedBad1()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.nestedBad2()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterInputStreamLeaks.inflaterInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectInputStreamClosedNestedBad()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintGetProtocolEquals(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectOutputStreamClosedNestedBad()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "int CursorLeaks.getImageCountHelperNotClosed(String)", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.zipFileLeakExceptionalBranch()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "boolean ResourceLeaks.jarFileNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void NullPointerExceptions.derefNullableGetter()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.fileInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.objectOutputStreamClosedNestedBad()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.pipedInputStreamNotClosedAfterRead(PipedOutputStream)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.pipedOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintGetAuthorityStartsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ReaderLeaks.pushbackReaderNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectOutputStreamNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void CloseableAsResourceExample.notClosingWrapper()", + "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.objectInputStreamClosedNestedBad()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.objectInputStreamNotClosedAfterRead()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.nestedBad2()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.jarInputStreamLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String NullPointerExceptions.hashmapNPE(HashMap,Object)", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.nestedBadJarInputStream(File)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterOutputStreamLeaks.printStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.jarOutputStreamLeak()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void NullPointerExceptions.sinkWithNeverNullSource()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.nestedBadJarOutputStream()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterOutputStreamLeaks.inflaterOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.socketNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ResourceLeaks.openHttpsURLConnectionNotDisconnected()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.serverSocketNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterOutputStreamLeaks.filterOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.openHttpURLConnectionNotDisconnected()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ContextLeaks.indirectHandlerLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.openHttpsURLConnectionNotDisconnected()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void CursorLeaks.queryUVMLegacyDbNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.parseFromInputStreamAndLeak(JsonFactory)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "int CursorLeaks.cursorNotClosed(SQLiteDatabase)", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "String ResourceLeaks.readInstallationFileBad(File)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void WriterLeaks.outputStreamWriterNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "int ResourceLeaks.readConfigNotCloseStream(String)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void FilterOutputStreamLeaks.cipherOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.themeObtainTypedArrayAndLeak(Resources$Theme)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void NullPointerExceptions.nullableParamNPE(Object)", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.activityObtainTypedArrayAndLeak(Activity)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "String TaintExample.taintToExternalFormEquals(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.contextObtainTypedArrayAndLeak(Context)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void ContextLeaks.directLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.copyFileLeak(File,File)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void AnalysisStops.fieldReadInCalleeWithAngelicObjFieldMayCauseFalseNegative()", + "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.copyFileLeak(File,File)", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void CursorLeaks.loadPrefsFromContentProviderNotClosed()", + "file": "infer/tests/codetoanalyze/java/infer/CursorLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void ResourceLeaks.scannerNotClosed()", - "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java" + "procedure": "void Builtins.doNotBlockError(Object)", + "file": "infer/tests/codetoanalyze/java/infer/Builtins.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetHostEquals(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetHostCompareTo(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void ContextLeaks.nonStaticInnerClassLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetHostEndsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "boolean DotFilesEqual.matches(Object)", + "file": "infer/tests/utils/matchers/DotFilesEqual.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetHostStartsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "int HashMapExample.getOneIntegerWithoutCheck()", + "file": "infer/tests/codetoanalyze/java/infer/HashMapExample.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetAuthoriyEquals(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void AnalysisStops.skipFunctionInLoopMayCauseFalseNegative()", + "file": "infer/tests/codetoanalyze/java/infer/AnalysisStops.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetAuthorityCompareTo(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void NullPointerExceptions.badCheckShouldCauseNPE()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetAuthorityEndsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "String TaintExample.taintToExternalFormEndsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetAuthorityStartsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void ResourceLeaks.nestedBadJarOutputStream()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetProtocolEquals(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void FilterOutputStreamLeaks.bufferedOutputStreamNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/FilterOutputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetProtocolCompareTo(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void WriterLeaks.writerNotClosedAfterWrite()", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetProtocolEndsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader)", + "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintGetProtocolStartsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "int NullPointerExceptions.NPEvalueOfFromHashmapBad(HashMap,int)", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToExternalFormEquals(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void CloseableAsResourceExample.withException()", + "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToExternalFormCompareTo(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void FilterInputStreamLeaks.digestInputStreamNotClosedAfterRead()", + "file": "infer/tests/codetoanalyze/java/infer/FilterInputStreamLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToExternalFormEndsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionCallArrayReadMethod()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToExternalFormStartsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void ContextLeaks.indirectLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToStringEquals(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void CloseableAsResourceExample.notClosingCloseable()", + "file": "infer/tests/codetoanalyze/java/infer/CloseableAsResourceExample.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToStringCompareTo(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void ReaderLeaks.pipedReaderNotClosedAfterConstructedWithWriter()", + "file": "infer/tests/codetoanalyze/java/infer/ReaderLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToStringEndsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void ResourceLeaks.copyFileLeak(File,File)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION", - "procedure": "String TaintExample.taintToStringStartsWith(String)", - "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionFromFailingFileOutputStreamConstructor()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.writerNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "ContextLeaks$Singleton ContextLeaks.singletonLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ContextLeaks.java", + "bug_type": "CONTEXT_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.printWriterNotClosedAfterAppend()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "void NullPointerExceptions.someNPEAfterResourceLeak()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.bufferedWriterNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "void NullPointerExceptions.nullPointerExceptionWithNullArrayParameter()", + "file": "infer/tests/codetoanalyze/java/infer/NullPointerExceptions.java", + "bug_type": "NULL_DEREFERENCE" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.outputStreamWriterNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "String TaintExample.taintToStringEndsWith(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.fileWriterNotClosedAfterWrite()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "int ResourceLeaks.fileOutputStreamTwoLeaks(boolean)", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConstructedWithReader()", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "String TaintExample.taintGetAuthoriyEquals(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "void WriterLeaks.pipedWriterNotClosedAfterConnect(PipedReader)", - "file": "infer/tests/codetoanalyze/java/infer/WriterLeaks.java" + "procedure": "String TaintExample.taintGetAuthorityCompareTo(String)", + "file": "infer/tests/codetoanalyze/java/infer/TaintExample.java", + "bug_type": "TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION" }, { - "type": "RESOURCE_LEAK", - "procedure": "boolean DotFilesEqual.matches(Object)", - "file": "infer/tests/utils/matchers/DotFilesEqual.java" + "procedure": "void ResourceLeaks.jarInputStreamLeak()", + "file": "infer/tests/codetoanalyze/java/infer/ResourceLeaks.java", + "bug_type": "RESOURCE_LEAK" } ] \ No newline at end of file