diff --git a/after/entrypoint.sh b/after/entrypoint.sh index 2d20dcb..51ae360 100755 --- a/after/entrypoint.sh +++ b/after/entrypoint.sh @@ -3,4 +3,4 @@ set -e cd /tools/home -/tools/infer/bin/infer -- mvn compile -Drat.skip=true +/tools/infer/bin/infer -- mvn compile test -Drat.skip=true -Danimal.sniffer.skip=true diff --git a/after/infer-out/.global.tenv b/after/infer-out/.global.tenv index f2eb2de..ad82337 100644 Binary files a/after/infer-out/.global.tenv and b/after/infer-out/.global.tenv differ diff --git a/after/infer-out/.infer_runstate.json b/after/infer-out/.infer_runstate.json index 5dc8b3a..e2d4b4f 100644 --- a/after/infer-out/.infer_runstate.json +++ b/after/infer-out/.infer_runstate.json @@ -1 +1 @@ -{"run_sequence":[{"date":"2023-04-11 09:38:59.468025+02:00","command":"run","infer_version":{"major":1,"minor":1,"patch":0,"commit":"f9b6f2b"}}],"results_dir_format":"db_filename: infer-out/results.db\ndb_schema: \n CREATE TABLE IF NOT EXISTS procedures\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , attr_kind INTEGER NOT NULL\n , source_file TEXT NOT NULL\n , proc_attributes BLOB NOT NULL\n , cfg BLOB\n , callees BLOB NOT NULL\n )\n ;\n\n CREATE TABLE IF NOT EXISTS source_files\n ( source_file TEXT PRIMARY KEY\n , type_environment BLOB NOT NULL\n , integer_type_widths BLOB\n , procedure_names BLOB NOT NULL\n , freshly_captured INT NOT NULL )\n ;\n\n CREATE TABLE IF NOT EXISTS specs\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , analysis_summary BLOB NOT NULL\n , report_summary BLOB NOT NULL\n )\n ;\n\n CREATE TABLE IF NOT EXISTS model_specs\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , analysis_summary BLOB NOT NULL\n , report_summary BLOB NOT NULL\n )\n ","should_merge_capture":false} \ No newline at end of file +{"run_sequence":[{"date":"2023-04-12 13:04:24.635363+02:00","command":"run","infer_version":{"major":1,"minor":1,"patch":0,"commit":"f9b6f2b"}}],"results_dir_format":"db_filename: infer-out/results.db\ndb_schema: \n CREATE TABLE IF NOT EXISTS procedures\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , attr_kind INTEGER NOT NULL\n , source_file TEXT NOT NULL\n , proc_attributes BLOB NOT NULL\n , cfg BLOB\n , callees BLOB NOT NULL\n )\n ;\n\n CREATE TABLE IF NOT EXISTS source_files\n ( source_file TEXT PRIMARY KEY\n , type_environment BLOB NOT NULL\n , integer_type_widths BLOB\n , procedure_names BLOB NOT NULL\n , freshly_captured INT NOT NULL )\n ;\n\n CREATE TABLE IF NOT EXISTS specs\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , analysis_summary BLOB NOT NULL\n , report_summary BLOB NOT NULL\n )\n ;\n\n CREATE TABLE IF NOT EXISTS model_specs\n ( proc_uid TEXT PRIMARY KEY NOT NULL\n , proc_name BLOB NOT NULL\n , analysis_summary BLOB NOT NULL\n , report_summary BLOB NOT NULL\n )\n ","should_merge_capture":false} \ No newline at end of file diff --git a/after/infer-out/racerd/MultiBackgroundInitializer.java.3c5ea2a404a5c4f06e9ee03799aa696b.issue b/after/infer-out/racerd/MultiBackgroundInitializer.java.3c5ea2a404a5c4f06e9ee03799aa696b.issue deleted file mode 100644 index 1cc2800..0000000 Binary files a/after/infer-out/racerd/MultiBackgroundInitializer.java.3c5ea2a404a5c4f06e9ee03799aa696b.issue and /dev/null differ diff --git a/after/infer-out/report.json b/after/infer-out/report.json index 6dae3d0..b8e9092 100644 --- a/after/infer-out/report.json +++ b/after/infer-out/report.json @@ -1 +1 @@ -[{"bug_type":"NULL_DEREFERENCE","qualifier":"object returned by `getAllInterfaces(cls)` could be null and is dereferenced at line 72.","severity":"ERROR","line":72,"column":-1,"procedure":"org.apache.commons.lang3.AnnotationUtils$1.getShortClassName(java.lang.Class):java.lang.String","procedure_start_line":71,"file":"src/main/java/org/apache/commons/lang3/AnnotationUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/AnnotationUtils.java","line_number":71,"column_number":-1,"description":"start of procedure getShortClassName(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/AnnotationUtils.java","line_number":72,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":595,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/AnnotationUtils.java","line_number":72,"column_number":-1,"description":""}],"key":"AnnotationUtils.java|getShortClassName|NULL_DEREFERENCE","node_key":"75a3105ef036e14d28c2a0df35d92164","hash":"a08533ab61d2fb9215626d7b14af646c","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object returned by `getAllInterfaces(cls)` could be null and is dereferenced at line 126.","severity":"ERROR","line":126,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.getField(java.lang.Class,java.lang.CharSequence,boolean):java.lang.reflect.Field","procedure_start_line":87,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":87,"column_number":-1,"description":"start of procedure getField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":88,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking false branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":125,"column_number":-1,"description":""},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":595,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":""}],"key":"FieldUtils.java|getField|NULL_DEREFERENCE","node_key":"75a3105ef036e14d28c2a0df35d92164","hash":"26ade70057d66fd8a78cf3be90aa9efd","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `null` is dereferenced by call to `toString(...)` at line 131.","severity":"ERROR","line":131,"column":-1,"procedure":"org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(java.lang.Object):java.lang.String","procedure_start_line":131,"file":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":131,"column_number":-1,"description":"start of procedure toString(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":309,"column_number":-1,"description":"start of procedure toString(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":312,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":554,"column_number":-1,"description":"start of procedure ReflectionToStringBuilder(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":437,"column_number":-1,"description":"start of procedure checkNotNull(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":438,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":438,"column_number":-1,"description":"return from a call to Object ReflectionToStringBuilder.checkNotNull(Object)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":554,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":249,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":250,"column_number":-1,"description":"Taking false branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":253,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":254,"column_number":-1,"description":"Skipping StringBuffer(...): unknown method"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":256,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":257,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":258,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":260,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":408,"column_number":-1,"description":"start of procedure appendStart(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":409,"column_number":-1,"description":"Taking true branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":410,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1475,"column_number":-1,"description":"start of procedure appendClassName(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1477,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1478,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1479,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1613,"column_number":-1,"description":"start of procedure getShortClassName(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1614,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":197,"column_number":-1,"description":"start of procedure getShortClassName(...)"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":198,"column_number":-1,"description":"Taking false branch"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":201,"column_number":-1,"description":"Skipping getShortClassName(...): empty list of specs"},{"level":8,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":229,"column_number":-1,"description":"Definition of getShortClassName(...)"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":201,"column_number":-1,"description":"return from a call to String ClassUtils.getShortClassName(Class)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1614,"column_number":-1,"description":"return from a call to String ToStringStyle.getShortClassName(Class)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1479,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1484,"column_number":-1,"description":"return from a call to void ToStringStyle.appendClassName(StringBuffer,Object)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":411,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1492,"column_number":-1,"description":"start of procedure appendIdentityHashCode(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1669,"column_number":-1,"description":"start of procedure isUseIdentityHashCode()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1670,"column_number":-1,"description":"return from a call to boolean ToStringStyle.isUseIdentityHashCode()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1494,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1495,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1496,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1498,"column_number":-1,"description":"return from a call to void ToStringStyle.appendIdentityHashCode(StringBuffer,Object)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":412,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1505,"column_number":-1,"description":"start of procedure appendContentStart(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1506,"column_number":-1,"description":"Skipping append(...): unknown method"}],"key":"ReflectionToStringBuilder.java|toString|NULL_DEREFERENCE","node_key":"b891320c3f80cf32f82e24e6e38f8d8b","hash":"68c5cd0bcb5dafd56fe43082e56d8c25","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object returned by `org.apache.commons.lang3.time.DurationUtils.LONG_TO_INT_RANGE.fit(valueOf(duration.toMillis()))` could be null and is dereferenced at line 142.","severity":"ERROR","line":142,"column":-1,"procedure":"org.apache.commons.lang3.time.DurationUtils.toMillisInt(java.time.Duration):int","procedure_start_line":139,"file":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":139,"column_number":-1,"description":"start of procedure toMillisInt(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":140,"column_number":-1,"description":"Skipping requireNonNull(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":142,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":469,"column_number":-1,"description":"start of procedure fit(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":471,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":472,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":337,"column_number":-1,"description":"start of procedure isAfter(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":338,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":339,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":341,"column_number":-1,"description":"return from a call to boolean Range.isAfter(Object)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":472,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":474,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":366,"column_number":-1,"description":"start of procedure isBefore(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":367,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":368,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":370,"column_number":-1,"description":"return from a call to boolean Range.isBefore(Object)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":474,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":477,"column_number":-1,"description":"return from a call to Object Range.fit(Object)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":142,"column_number":-1,"description":""}],"key":"DurationUtils.java|toMillisInt|NULL_DEREFERENCE","node_key":"bfbfa1a82447adb1fa12916066fec94d","hash":"f2ac400c043669366dd89608e233049a","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `chars` last assigned on line 177 could be null and is dereferenced at line 181.","severity":"ERROR","line":181,"column":-1,"procedure":"org.apache.commons.lang3.CharSetUtils.modify(java.lang.String,java.lang.String[],boolean):java.lang.String","procedure_start_line":176,"file":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":176,"column_number":-1,"description":"start of procedure modify(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":177,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":155,"column_number":-1,"description":"start of procedure getInstance(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":156,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":157,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":165,"column_number":-1,"description":"return from a call to CharSet CharSet.getInstance(String[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":178,"column_number":-1,"description":"Skipping StringBuilder(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":179,"column_number":-1,"description":"Skipping toCharArray(): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":180,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":181,"column_number":-1,"description":""}],"key":"CharSetUtils.java|modify|NULL_DEREFERENCE","node_key":"b4e36bdef71c9740469c08083ca60d1d","hash":"dfd85b815d94a1dcd43ebcf7e6796784","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `null` is dereferenced by call to `ToStringBuilder(...)` at line 223.","severity":"ERROR","line":223,"column":-1,"procedure":"org.apache.commons.lang3.builder.ToStringBuilder.(java.lang.Object)","procedure_start_line":223,"file":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":223,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":249,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":250,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":253,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":256,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":257,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":258,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":260,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":408,"column_number":-1,"description":"start of procedure appendStart(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":409,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":410,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1475,"column_number":-1,"description":"start of procedure appendClassName(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking false branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1484,"column_number":-1,"description":"return from a call to void ToStringStyle.appendClassName(StringBuffer,Object)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":411,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1492,"column_number":-1,"description":"start of procedure appendIdentityHashCode(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1669,"column_number":-1,"description":"start of procedure isUseIdentityHashCode()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1670,"column_number":-1,"description":"return from a call to boolean ToStringStyle.isUseIdentityHashCode()"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1494,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1495,"column_number":-1,"description":"Skipping append(...): unknown method"}],"key":"ToStringBuilder.java||NULL_DEREFERENCE","node_key":"873ce38868811a59e7b77550b94ee768","hash":"c33b1be7a981b70a3dd03e70f87a0d64","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 338 could be null and is dereferenced by call to `readStaticField(...)` at line 341.","severity":"ERROR","line":341,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.readStaticField(java.lang.Class,java.lang.CharSequence,boolean):java.lang.Object","procedure_start_line":337,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":337,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":338,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":87,"column_number":-1,"description":"start of procedure getField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":88,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Class,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":107,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":110,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":111,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":125,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":598,"column_number":-1,"description":"Skipping LinkedHashSet(): unknown method"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":599,"column_number":-1,"description":"Skipping getAllInterfaces(...): empty list of specs"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":610,"column_number":-1,"description":"Definition of getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":136,"column_number":-1,"description":"return from a call to Field FieldUtils.getField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":339,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":341,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":295,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":296,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":297,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|readStaticField|NULL_DEREFERENCE","node_key":"265ba86214678cae77b0c9ab2eedcb6d","hash":"4a6851ca490c7078176fc1511ed64532","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 382 could be null and is dereferenced by call to `readStaticField(...)` at line 385.","severity":"ERROR","line":385,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.readDeclaredStaticField(java.lang.Class,java.lang.String,boolean):java.lang.Object","procedure_start_line":381,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":381,"column_number":-1,"description":"start of procedure readDeclaredStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":382,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":170,"column_number":-1,"description":"start of procedure getDeclaredField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":171,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":172,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":172,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":175,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":85,"column_number":-1,"description":"start of procedure isAccessible(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"return from a call to boolean MemberUtils.isAccessible(Member)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":177,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":180,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":187,"column_number":-1,"description":"return from a call to Field FieldUtils.getDeclaredField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":383,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":385,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":295,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":296,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":297,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|readDeclaredStaticField|NULL_DEREFERENCE","node_key":"265ba86214678cae77b0c9ab2eedcb6d","hash":"01c619e497c6ce88168fb559f30d2359","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object returned by `primitiveToWrapper(varArgComponentType)` could be null and is dereferenced by call to `newInstance(...)` at line 486.","severity":"ERROR","line":486,"column":-1,"procedure":"org.apache.commons.lang3.reflect.MethodUtils.getVarArgs(java.lang.Object[],java.lang.Class[]):java.lang.Object[]","procedure_start_line":469,"file":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":469,"column_number":-1,"description":"start of procedure getVarArgs(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":470,"column_number":-1,"description":"Taking false branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":477,"column_number":-1,"description":""},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":480,"column_number":-1,"description":"Skipping arraycopy(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":483,"column_number":-1,"description":"Skipping getComponentType(): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":484,"column_number":-1,"description":""},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":486,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":950,"column_number":-1,"description":"start of procedure primitiveToWrapper(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":951,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":952,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":955,"column_number":-1,"description":"return from a call to Class ClassUtils.primitiveToWrapper(Class)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":486,"column_number":-1,"description":""}],"key":"MethodUtils.java|getVarArgs|NULL_DEREFERENCE","node_key":"22104a214f27e4c1b8cb15bc1875b6bf","hash":"422a75b0b6d9ace02897252f7005da12","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 596 could be null and is dereferenced by call to `writeStaticField(...)` at line 599.","severity":"ERROR","line":599,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.writeStaticField(java.lang.Class,java.lang.CharSequence,java.lang.Object,boolean):void","procedure_start_line":594,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":594,"column_number":-1,"description":"start of procedure writeStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":596,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":87,"column_number":-1,"description":"start of procedure getField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":88,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Class,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":107,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":110,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":111,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":125,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":598,"column_number":-1,"description":"Skipping LinkedHashSet(): unknown method"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":599,"column_number":-1,"description":"Skipping getAllInterfaces(...): empty list of specs"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":610,"column_number":-1,"description":"Definition of getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":126,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":136,"column_number":-1,"description":"return from a call to Field FieldUtils.getField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":597,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":599,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":549,"column_number":-1,"description":"start of procedure writeStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":550,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":551,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|writeStaticField|NULL_DEREFERENCE","node_key":"de2d9a76245ad9462bfe064598214247","hash":"3a0df1472de26afb639a96cc7a964a56","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 641 could be null and is dereferenced by call to `writeField(...)` at line 644.","severity":"ERROR","line":644,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.writeDeclaredStaticField(java.lang.Class,java.lang.String,java.lang.Object,boolean):void","procedure_start_line":639,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":639,"column_number":-1,"description":"start of procedure writeDeclaredStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":641,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":170,"column_number":-1,"description":"start of procedure getDeclaredField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":171,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":172,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":172,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":175,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":85,"column_number":-1,"description":"start of procedure isAccessible(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"return from a call to boolean MemberUtils.isAccessible(Member)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":177,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":180,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":187,"column_number":-1,"description":"return from a call to Field FieldUtils.getDeclaredField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":642,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":644,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":682,"column_number":-1,"description":"start of procedure writeField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":684,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Member,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":685,"column_number":-1,"description":"Taking true branch"}],"key":"FieldUtils.java|writeDeclaredStaticField|NULL_DEREFERENCE","node_key":"de2d9a76245ad9462bfe064598214247","hash":"0758984e6ec9244726192dfb6c39e168","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `classes` last assigned on line 986 could be null and is dereferenced at line 987.","severity":"ERROR","line":987,"column":-1,"procedure":"org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(java.lang.reflect.Method,java.lang.Class,boolean,boolean):java.lang.annotation.Annotation","procedure_start_line":973,"file":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":973,"column_number":-1,"description":"start of procedure getAnnotation(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":976,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":977,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":978,"column_number":-1,"description":"Taking false branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":982,"column_number":-1,"description":"Skipping getAnnotation(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":984,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":984,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":985,"column_number":-1,"description":"Skipping getDeclaringClass(): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":986,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1012,"column_number":-1,"description":"start of procedure getAllSuperclassesAndInterfaces(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1013,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1014,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1034,"column_number":-1,"description":"return from a call to List MethodUtils.getAllSuperclassesAndInterfaces(Class)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":987,"column_number":-1,"description":""}],"key":"MethodUtils.java|getAnnotation|NULL_DEREFERENCE","node_key":"75a3105ef036e14d28c2a0df35d92164","hash":"86b319231c71a4e6dd8d4304c3a4141d","bug_type_hum":"Null Dereference"},{"bug_type":"THREAD_SAFETY_VIOLATION","qualifier":"Read/Write race. Non-private method `MultiBackgroundInitializer.getTaskCount()` reads without synchronization from container `this.childInitializers` via call to `Map.values()`. Potentially races with write in method `MultiBackgroundInitializer.addInitializer(...)`.\n Reporting because another access to the same memory occurs on a background thread, although this access may not.","severity":"WARNING","line":160,"column":-1,"procedure":"org.apache.commons.lang3.concurrent.MultiBackgroundInitializer.getTaskCount():int","procedure_start_line":0,"file":"src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java","line_number":160,"column_number":-1,"description":""},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java","line_number":160,"column_number":-1,"description":"Read of container `this.childInitializers` via call to `values`"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java","line_number":142,"column_number":-1,"description":""},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java","line_number":142,"column_number":-1,"description":"Write to container `this.childInitializers` via call to `put`"}],"key":"MultiBackgroundInitializer.java|getTaskCount|THREAD_SAFETY_VIOLATION","hash":"851f0ff7931bb774dadc2c77cb1fe087","bug_type_hum":"Thread Safety Violation","access":"hJWmvgAAALcAAAAIAAAAPgAAACqgsAEAoAD/kglRc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2NvbW1vbnMvbGFuZzMvY29uY3VycmVudC9NdWx0aUJhY2tncm91bmRJbml0aWFsaXplci5qYXZhoLABAI4A/5IJUXNyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9jb21tb25zL2xhbmczL2NvbmN1cnJlbnQvTXVsdGlCYWNrZ3JvdW5kSW5pdGlhbGl6ZXIuamF2YUA="}] +[{"bug_type":"NULL_DEREFERENCE","qualifier":"object `null` is dereferenced by call to `toString(...)` at line 131.","severity":"ERROR","line":131,"column":-1,"procedure":"org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(java.lang.Object):java.lang.String","procedure_start_line":131,"file":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":131,"column_number":-1,"description":"start of procedure toString(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":309,"column_number":-1,"description":"start of procedure toString(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":312,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":554,"column_number":-1,"description":"start of procedure ReflectionToStringBuilder(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":437,"column_number":-1,"description":"start of procedure checkNotNull(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":438,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":438,"column_number":-1,"description":"return from a call to Object ReflectionToStringBuilder.checkNotNull(Object)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java","line_number":554,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":249,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":250,"column_number":-1,"description":"Taking false branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":253,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":254,"column_number":-1,"description":"Skipping StringBuffer(...): unknown method"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":256,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":257,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":258,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":260,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":408,"column_number":-1,"description":"start of procedure appendStart(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":409,"column_number":-1,"description":"Taking true branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":410,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1475,"column_number":-1,"description":"start of procedure appendClassName(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1477,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1478,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1479,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1613,"column_number":-1,"description":"start of procedure getShortClassName(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1614,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":197,"column_number":-1,"description":"start of procedure getShortClassName(...)"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":198,"column_number":-1,"description":"Taking false branch"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":201,"column_number":-1,"description":"Skipping getShortClassName(...): empty list of specs"},{"level":8,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":229,"column_number":-1,"description":"Definition of getShortClassName(...)"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":201,"column_number":-1,"description":"return from a call to String ClassUtils.getShortClassName(Class)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1614,"column_number":-1,"description":"return from a call to String ToStringStyle.getShortClassName(Class)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1479,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1484,"column_number":-1,"description":"return from a call to void ToStringStyle.appendClassName(StringBuffer,Object)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":411,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1492,"column_number":-1,"description":"start of procedure appendIdentityHashCode(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1669,"column_number":-1,"description":"start of procedure isUseIdentityHashCode()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1670,"column_number":-1,"description":"return from a call to boolean ToStringStyle.isUseIdentityHashCode()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1494,"column_number":-1,"description":""},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":7,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":6,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1495,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1496,"column_number":-1,"description":"Skipping append(...): unknown method"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1498,"column_number":-1,"description":"return from a call to void ToStringStyle.appendIdentityHashCode(StringBuffer,Object)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":412,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1505,"column_number":-1,"description":"start of procedure appendContentStart(...)"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1506,"column_number":-1,"description":"Skipping append(...): unknown method"}],"key":"ReflectionToStringBuilder.java|toString|NULL_DEREFERENCE","node_key":"b891320c3f80cf32f82e24e6e38f8d8b","hash":"68c5cd0bcb5dafd56fe43082e56d8c25","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object returned by `org.apache.commons.lang3.time.DurationUtils.LONG_TO_INT_RANGE.fit(valueOf(duration.toMillis()))` could be null and is dereferenced at line 142.","severity":"ERROR","line":142,"column":-1,"procedure":"org.apache.commons.lang3.time.DurationUtils.toMillisInt(java.time.Duration):int","procedure_start_line":139,"file":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":139,"column_number":-1,"description":"start of procedure toMillisInt(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":140,"column_number":-1,"description":"Skipping requireNonNull(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":142,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":469,"column_number":-1,"description":"start of procedure fit(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":471,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":472,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":337,"column_number":-1,"description":"start of procedure isAfter(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":338,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":339,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":341,"column_number":-1,"description":"return from a call to boolean Range.isAfter(Object)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":472,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":474,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":366,"column_number":-1,"description":"start of procedure isBefore(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":367,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":368,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":370,"column_number":-1,"description":"return from a call to boolean Range.isBefore(Object)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":474,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Range.java","line_number":477,"column_number":-1,"description":"return from a call to Object Range.fit(Object)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/time/DurationUtils.java","line_number":142,"column_number":-1,"description":""}],"key":"DurationUtils.java|toMillisInt|NULL_DEREFERENCE","node_key":"bfbfa1a82447adb1fa12916066fec94d","hash":"f2ac400c043669366dd89608e233049a","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `chars` last assigned on line 177 could be null and is dereferenced at line 181.","severity":"ERROR","line":181,"column":-1,"procedure":"org.apache.commons.lang3.CharSetUtils.modify(java.lang.String,java.lang.String[],boolean):java.lang.String","procedure_start_line":176,"file":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":176,"column_number":-1,"description":"start of procedure modify(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":177,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":155,"column_number":-1,"description":"start of procedure getInstance(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":156,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":157,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/CharSet.java","line_number":165,"column_number":-1,"description":"return from a call to CharSet CharSet.getInstance(String[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":178,"column_number":-1,"description":"Skipping StringBuilder(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":179,"column_number":-1,"description":"Skipping toCharArray(): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":180,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/CharSetUtils.java","line_number":181,"column_number":-1,"description":""}],"key":"CharSetUtils.java|modify|NULL_DEREFERENCE","node_key":"b4e36bdef71c9740469c08083ca60d1d","hash":"dfd85b815d94a1dcd43ebcf7e6796784","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `null` is dereferenced by call to `ToStringBuilder(...)` at line 223.","severity":"ERROR","line":223,"column":-1,"procedure":"org.apache.commons.lang3.builder.ToStringBuilder.(java.lang.Object)","procedure_start_line":223,"file":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":223,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":249,"column_number":-1,"description":"start of procedure ToStringBuilder(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":250,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":253,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":256,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":257,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":258,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java","line_number":260,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":408,"column_number":-1,"description":"start of procedure appendStart(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":409,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":410,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1475,"column_number":-1,"description":"start of procedure appendClassName(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1476,"column_number":-1,"description":"Taking false branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1484,"column_number":-1,"description":"return from a call to void ToStringStyle.appendClassName(StringBuffer,Object)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":411,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1492,"column_number":-1,"description":"start of procedure appendIdentityHashCode(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1669,"column_number":-1,"description":"start of procedure isUseIdentityHashCode()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1670,"column_number":-1,"description":"return from a call to boolean ToStringStyle.isUseIdentityHashCode()"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1493,"column_number":-1,"description":"Taking true branch"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1494,"column_number":-1,"description":""},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":219,"column_number":-1,"description":"start of procedure register(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":220,"column_number":-1,"description":"Taking true branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":221,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":222,"column_number":-1,"description":"Taking false branch"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":""},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":190,"column_number":-1,"description":"start of procedure getRegistry()"},{"level":5,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":191,"column_number":-1,"description":"return from a call to Map ToStringStyle.getRegistry()"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":225,"column_number":-1,"description":"Skipping put(...): unknown method"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":227,"column_number":-1,"description":"return from a call to void ToStringStyle.register(Object)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java","line_number":1495,"column_number":-1,"description":"Skipping append(...): unknown method"}],"key":"ToStringBuilder.java||NULL_DEREFERENCE","node_key":"873ce38868811a59e7b77550b94ee768","hash":"c33b1be7a981b70a3dd03e70f87a0d64","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 344 could be null and is dereferenced by call to `readStaticField(...)` at line 347.","severity":"ERROR","line":347,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.readStaticField(java.lang.Class,java.lang.String,boolean):java.lang.Object","procedure_start_line":343,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":343,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":344,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":87,"column_number":-1,"description":"start of procedure getField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":88,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Class,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":107,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":110,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":111,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":123,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":598,"column_number":-1,"description":"Skipping LinkedHashSet(): unknown method"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":599,"column_number":-1,"description":"Skipping getAllInterfaces(...): empty list of specs"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":610,"column_number":-1,"description":"Definition of getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":124,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":131,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":132,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":142,"column_number":-1,"description":"return from a call to Field FieldUtils.getField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":345,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":347,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":301,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":302,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":303,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|readStaticField|NULL_DEREFERENCE","node_key":"265ba86214678cae77b0c9ab2eedcb6d","hash":"4a6851ca490c7078176fc1511ed64532","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 388 could be null and is dereferenced by call to `readStaticField(...)` at line 391.","severity":"ERROR","line":391,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.readDeclaredStaticField(java.lang.Class,java.lang.String,boolean):java.lang.Object","procedure_start_line":387,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":387,"column_number":-1,"description":"start of procedure readDeclaredStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":388,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":"start of procedure getDeclaredField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":177,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":178,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":178,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":181,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":182,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":85,"column_number":-1,"description":"start of procedure isAccessible(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"return from a call to boolean MemberUtils.isAccessible(Member)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":182,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":183,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":186,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":193,"column_number":-1,"description":"return from a call to Field FieldUtils.getDeclaredField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":389,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":391,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":301,"column_number":-1,"description":"start of procedure readStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":302,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":303,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|readDeclaredStaticField|NULL_DEREFERENCE","node_key":"265ba86214678cae77b0c9ab2eedcb6d","hash":"01c619e497c6ce88168fb559f30d2359","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 602 could be null and is dereferenced by call to `writeStaticField(...)` at line 605.","severity":"ERROR","line":605,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.writeStaticField(java.lang.Class,java.lang.String,java.lang.Object,boolean):void","procedure_start_line":600,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":600,"column_number":-1,"description":"start of procedure writeStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":602,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":87,"column_number":-1,"description":"start of procedure getField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":88,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Class,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":89,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":107,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":110,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":111,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":105,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":123,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":593,"column_number":-1,"description":"start of procedure getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":594,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":598,"column_number":-1,"description":"Skipping LinkedHashSet(): unknown method"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":599,"column_number":-1,"description":"Skipping getAllInterfaces(...): empty list of specs"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":610,"column_number":-1,"description":"Definition of getAllInterfaces(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/ClassUtils.java","line_number":601,"column_number":-1,"description":"return from a call to List ClassUtils.getAllInterfaces(Class)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":124,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":131,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":132,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":142,"column_number":-1,"description":"return from a call to Field FieldUtils.getField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":603,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":605,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":555,"column_number":-1,"description":"start of procedure writeStaticField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":556,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Field,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":557,"column_number":-1,"description":"Skipping getModifiers(): unknown method"}],"key":"FieldUtils.java|writeStaticField|NULL_DEREFERENCE","node_key":"de2d9a76245ad9462bfe064598214247","hash":"3a0df1472de26afb639a96cc7a964a56","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `field` last assigned on line 647 could be null and is dereferenced by call to `writeField(...)` at line 650.","severity":"ERROR","line":650,"column":-1,"procedure":"org.apache.commons.lang3.reflect.FieldUtils.writeDeclaredStaticField(java.lang.Class,java.lang.String,java.lang.Object,boolean):void","procedure_start_line":645,"file":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":645,"column_number":-1,"description":"start of procedure writeDeclaredStaticField(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":647,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":176,"column_number":-1,"description":"start of procedure getDeclaredField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":177,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":178,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3718,"column_number":-1,"description":"start of procedure isNotBlank(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/StringUtils.java","line_number":3719,"column_number":-1,"description":"return from a call to boolean StringUtils.isNotBlank(CharSequence)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":178,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":156,"column_number":-1,"description":"start of procedure isTrue(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":157,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":160,"column_number":-1,"description":"return from a call to void Validate.isTrue(boolean,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":181,"column_number":-1,"description":"Skipping getDeclaredField(...): unknown method"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":182,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":85,"column_number":-1,"description":"start of procedure isAccessible(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking true branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"Taking false branch"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/reflect/MemberUtils.java","line_number":86,"column_number":-1,"description":"return from a call to boolean MemberUtils.isAccessible(Member)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":182,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":183,"column_number":-1,"description":"Taking false branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":186,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":193,"column_number":-1,"description":"return from a call to Field FieldUtils.getDeclaredField(Class,String,boolean)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":648,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":650,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":688,"column_number":-1,"description":"start of procedure writeField(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":690,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":4,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Member,String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java","line_number":691,"column_number":-1,"description":"Taking true branch"}],"key":"FieldUtils.java|writeDeclaredStaticField|NULL_DEREFERENCE","node_key":"de2d9a76245ad9462bfe064598214247","hash":"0758984e6ec9244726192dfb6c39e168","bug_type_hum":"Null Dereference"},{"bug_type":"NULL_DEREFERENCE","qualifier":"object `classes` last assigned on line 982 could be null and is dereferenced at line 983.","severity":"ERROR","line":983,"column":-1,"procedure":"org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(java.lang.reflect.Method,java.lang.Class,boolean,boolean):java.lang.annotation.Annotation","procedure_start_line":969,"file":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","bug_trace":[{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":969,"column_number":-1,"description":"start of procedure getAnnotation(...)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":972,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":973,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":223,"column_number":-1,"description":"start of procedure notNull(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":""},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"start of procedure Validate$Lambda$_49_3(...)"},{"level":3,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Validate$Lambda$_49_3.(String,Object[])"},{"level":2,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Supplier Validate.callsite_org.apache.commons.lang3.Validate$Lambda$_49_3(String,Object[])"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/Validate.java","line_number":224,"column_number":-1,"description":"return from a call to Object Validate.notNull(Object,String,Object[])"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":974,"column_number":-1,"description":"Taking false branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":978,"column_number":-1,"description":"Skipping getAnnotation(...): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":980,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":980,"column_number":-1,"description":"Taking true branch"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":981,"column_number":-1,"description":"Skipping getDeclaringClass(): unknown method"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":982,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1008,"column_number":-1,"description":"start of procedure getAllSuperclassesAndInterfaces(...)"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1009,"column_number":-1,"description":"Taking true branch"},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1010,"column_number":-1,"description":""},{"level":1,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":1030,"column_number":-1,"description":"return from a call to List MethodUtils.getAllSuperclassesAndInterfaces(Class)"},{"level":0,"filename":"src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java","line_number":983,"column_number":-1,"description":""}],"key":"MethodUtils.java|getAnnotation|NULL_DEREFERENCE","node_key":"75a3105ef036e14d28c2a0df35d92164","hash":"86b319231c71a4e6dd8d4304c3a4141d","bug_type_hum":"Null Dereference"}] diff --git a/after/infer-out/report.txt b/after/infer-out/report.txt index c94c443..ea2cc12 100644 --- a/after/infer-out/report.txt +++ b/after/infer-out/report.txt @@ -1,22 +1,4 @@ -#0 DONE -src/main/java/org/apache/commons/lang3/AnnotationUtils.java:72: error: Null Dereference - object returned by `getAllInterfaces(cls)` could be null and is dereferenced at line 72. - 70. @Override - 71. protected String getShortClassName(final Class cls) { - 72. > for (final Class iface : ClassUtils.getAllInterfaces(cls)) { - 73. if (Annotation.class.isAssignableFrom(iface)) { - 74. return "@" + iface.getName(); - -#1 DONE -src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:126: error: Null Dereference - object returned by `getAllInterfaces(cls)` could be null and is dereferenced at line 126. - 124. // superclass field. - 125. Field match = null; - 126. > for (final Class class1 : ClassUtils.getAllInterfaces(cls)) { - 127. try { - 128. final Field test = class1.getField(fieldName); - -#2 +#0 src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java:131: error: Null Dereference object `null` is dereferenced by call to `toString(...)` at line 131. 129. */ @@ -25,7 +7,7 @@ src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java:13 132. } 133. -#3 false positive, LONG_TO_INT_RANGE.fit never returns null (may throw NPE when param is null, never the case though as actual param is boxed primitive long) +#1 src/main/java/org/apache/commons/lang3/time/DurationUtils.java:142: error: Null Dereference object returned by `org.apache.commons.lang3.time.DurationUtils.LONG_TO_INT_RANGE.fit(valueOf(duration.toMillis()))` could be null and is dereferenced at line 142. 140. Objects.requireNonNull(duration, "duration"); @@ -34,7 +16,7 @@ src/main/java/org/apache/commons/lang3/time/DurationUtils.java:142: error: Null 143. } 144. -#4 false positive, java.lang.String.toCharArray() always returns a non-null char[] object +#2 src/main/java/org/apache/commons/lang3/CharSetUtils.java:181: error: Null Dereference object `chars` last assigned on line 177 could be null and is dereferenced at line 181. 179. final char[] chrs = str.toCharArray(); @@ -43,7 +25,7 @@ src/main/java/org/apache/commons/lang3/CharSetUtils.java:181: error: Null Derefe 182. buffer.append(chr); 183. } -#5 +#3 src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java:223: error: Null Dereference object `null` is dereferenced by call to `ToStringBuilder(...)` at line 223. 221. */ @@ -52,71 +34,51 @@ src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java:223: error: 224. } 225. -#6 false positive, Validate.notNull(field, ...) throws NPE if field is null thus if the method is call field is non-null -src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:341: error: Null Dereference - object `field` last assigned on line 338 could be null and is dereferenced by call to `readStaticField(...)` at line 341. - 339. Validate.notNull(field, "Cannot locate field '%s' on %s", fieldName, cls); - 340. // already forced access above, don't repeat it here: - 341. > return readStaticField(field, false); - 342. } - 343. +#4 +src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:347: error: Null Dereference + object `field` last assigned on line 344 could be null and is dereferenced by call to `readStaticField(...)` at line 347. + 345. Validate.notNull(field, "Cannot locate field '%s' on %s", fieldName, cls); + 346. // already forced access above, don't repeat it here: + 347. > return readStaticField(field, false); + 348. } + 349. -#7 false positive, Validate.notNull(field, ...) throws NPE if field is null thus if the method is call field is non-null -src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:385: error: Null Dereference - object `field` last assigned on line 382 could be null and is dereferenced by call to `readStaticField(...)` at line 385. - 383. Validate.notNull(field, "Cannot locate declared field %s.%s", cls.getName(), fieldName); - 384. // already forced access above, don't repeat it here: - 385. > return readStaticField(field, false); - 386. } - 387. +#5 +src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:391: error: Null Dereference + object `field` last assigned on line 388 could be null and is dereferenced by call to `readStaticField(...)` at line 391. + 389. Validate.notNull(field, "Cannot locate declared field %s.%s", cls.getName(), fieldName); + 390. // already forced access above, don't repeat it here: + 391. > return readStaticField(field, false); + 392. } + 393. -#8 DONE -src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java:486: error: Null Dereference - object returned by `primitiveToWrapper(varArgComponentType)` could be null and is dereferenced by call to `newInstance(...)` at line 486. - 484. final int varArgLength = args.length - methodParameterTypes.length + 1; - 485. - 486. > Object varArgsArray = Array.newInstance(ClassUtils.primitiveToWrapper(varArgComponentType), varArgLength); - 487. // Copy the variadic arguments into the varargs array. - 488. System.arraycopy(args, methodParameterTypes.length - 1, varArgsArray, 0, varArgLength); +#6 +src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:605: error: Null Dereference + object `field` last assigned on line 602 could be null and is dereferenced by call to `writeStaticField(...)` at line 605. + 603. Validate.notNull(field, "Cannot locate field %s on %s", fieldName, cls); + 604. // already forced access above, don't repeat it here: + 605. > writeStaticField(field, value, false); + 606. } + 607. -#9 false positive, Validate.notNull(field, ...) throws NPE if field is null thus if the method is call field is non-null -src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:599: error: Null Dereference - object `field` last assigned on line 596 could be null and is dereferenced by call to `writeStaticField(...)` at line 599. - 597. Validate.notNull(field, "Cannot locate field %s on %s", fieldName, cls); - 598. // already forced access above, don't repeat it here: - 599. > writeStaticField(field, value, false); - 600. } - 601. +#7 +src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:650: error: Null Dereference + object `field` last assigned on line 647 could be null and is dereferenced by call to `writeField(...)` at line 650. + 648. Validate.notNull(field, "Cannot locate declared field %s.%s", cls.getName(), fieldName); + 649. // already forced access above, don't repeat it here: + 650. > writeField(field, (Object) null, value, false); + 651. } + 652. -#10 false positive, Validate.notNull(field, ...) throws NPE if field is null thus if the method is call field is non-null -src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java:644: error: Null Dereference - object `field` last assigned on line 641 could be null and is dereferenced by call to `writeField(...)` at line 644. - 642. Validate.notNull(field, "Cannot locate declared field %s.%s", cls.getName(), fieldName); - 643. // already forced access above, don't repeat it here: - 644. > writeField(field, (Object) null, value, false); - 645. } - 646. +#8 +src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java:983: error: Null Dereference + object `classes` last assigned on line 982 could be null and is dereferenced at line 983. + 981. final Class mcls = method.getDeclaringClass(); + 982. final List> classes = getAllSuperclassesAndInterfaces(mcls); + 983. > for (final Class acls : classes) { + 984. final Method equivalentMethod = (ignoreAccess ? MethodUtils.getMatchingMethod(acls, method.getName(), method.getParameterTypes()) + 985. : MethodUtils.getMatchingAccessibleMethod(acls, method.getName(), method.getParameterTypes())); -#11 false positive, getAllSuperclassesAndInterfaces(mcls) is non-null if mcls is non-null, mcls is non-null as java.lang.reflect.Method.getDeclaringClass() is always non-null -src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java:987: error: Null Dereference - object `classes` last assigned on line 986 could be null and is dereferenced at line 987. - 985. final Class mcls = method.getDeclaringClass(); - 986. final List> classes = getAllSuperclassesAndInterfaces(mcls); - 987. > for (final Class acls : classes) { - 988. final Method equivalentMethod = (ignoreAccess ? MethodUtils.getMatchingMethod(acls, method.getName(), method.getParameterTypes()) - 989. : MethodUtils.getMatchingAccessibleMethod(acls, method.getName(), method.getParameterTypes())); - -#12 -src/main/java/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java:160: warning: Thread Safety Violation - Read/Write race. Non-private method `MultiBackgroundInitializer.getTaskCount()` reads without synchronization from container `this.childInitializers` via call to `Map.values()`. Potentially races with write in method `MultiBackgroundInitializer.addInitializer(...)`. - Reporting because another access to the same memory occurs on a background thread, although this access may not. - 158. int result = 1; - 159. - 160. > for (final BackgroundInitializer bi : childInitializers.values()) { - 161. result += bi.getTaskCount(); - 162. } - -Found 13 issues - Issue Type(ISSUED_TYPE_ID): # - Null Dereference(NULL_DEREFERENCE): 12 - Thread Safety Violation(THREAD_SAFETY_VIOLATION): 1 +Found 9 issues + Issue Type(ISSUED_TYPE_ID): # + Null Dereference(NULL_DEREFERENCE): 9 diff --git a/after/infer-out/results.db b/after/infer-out/results.db index 5008c55..b2e1959 100644 Binary files a/after/infer-out/results.db and b/after/infer-out/results.db differ diff --git a/after/infer-out/results.db-shm b/after/infer-out/results.db-shm index 7f7726d..786edb0 100644 Binary files a/after/infer-out/results.db-shm and b/after/infer-out/results.db-shm differ diff --git a/after/infer-out/results.db-wal b/after/infer-out/results.db-wal index 6105161..706ef5f 100644 Binary files a/after/infer-out/results.db-wal and b/after/infer-out/results.db-wal differ diff --git a/before/entrypoint.sh b/before/entrypoint.sh index 2d20dcb..51ae360 100755 --- a/before/entrypoint.sh +++ b/before/entrypoint.sh @@ -3,4 +3,4 @@ set -e cd /tools/home -/tools/infer/bin/infer -- mvn compile -Drat.skip=true +/tools/infer/bin/infer -- mvn compile test -Drat.skip=true -Danimal.sniffer.skip=true diff --git a/report.pdf b/report.pdf index 933bcbb..6ba5627 100644 Binary files a/report.pdf and b/report.pdf differ diff --git a/report.tex b/report.tex index 22708b9..3fb30cd 100644 --- a/report.tex +++ b/report.tex @@ -69,7 +69,7 @@ Assignment 1 -- Software Analysis \\\vspace{0.5cm} \section{Project selection} Given that this assignment draws parallels with the class of Software Design and Modelling of last semester, specifically regarding static analyzers, I choose to -analyze the same project I analyzed in the past with PMD and SonarQube +analyze the same project I analyzed in the past with PMD and SonarQube using Infer\footnote{\url{https://fbinfer.com/}} to make for an interesting comparison between static analysis paradigms. @@ -85,8 +85,8 @@ Commons Lang project focuses on classes that would have fitted in the All the source and test classes are contained within in the package \textit{org.apache.commons.lang3} or in a sub-package of that package. For the -sake of brevity, this prefix is omitted from now on when mentioning packages and -classes in the project. +sake of brevity, this prefix is omitted from now on when mentioning file paths +and classes in the project. I choose to analyze version 3.12.0 of the library (i.e.\ the code under the \textit{git} tag \textit{rel/commons-lang-3.12.0}) because it is the same @@ -94,9 +94,9 @@ version analyzed during the SDM class. To verify that the project satisfies the 5000 lines of code requirement, I run the \textit{cloc} tool. Results are shown in table \ref{tab:cloc}. Given the -project has more than 118,000 lines of code, this requirement is satisfied. +project has more than 86,000 lines of Java code, this requirement is satisfied. -\begin{table}[ht] +\begin{table}[H] \centering \begin{tabular}{lrrrr} \toprule @@ -118,8 +118,8 @@ project has more than 118,000 lines of code, this requirement is satisfied. Total & 518 & 19,270 & 61,280 & 118,526 \\ \bottomrule \end{tabular} - \caption{Output of the \textit{cloc} tool for the Apache Commons Lang project at - tag \textit{rel/commons-lang-3.12.0} (before fixes are applied).} + \caption{Output of the \textit{cloc} tool for the Apache Commons Lang project + at tag \textit{rel/commons-lang-3.12.0} (before fixes are applied).} \label{tab:cloc} \end{table} @@ -132,9 +132,21 @@ The relevant source code to analyze has been copied to the directory \href{https://gitlab.com/usi-si-teaching/msde/2022-2023/software-analysis/maggioni/assignment-2}{\textit{usi-si-teaching/msde/2022-2023/software-analysis/maggioni/assignment-2}} \end{center} -on \textit{gitlab.com}. The script \textit{docker-infer.sh} can be ran to +on \textit{gitlab.com}. The script \textit{docker-infer.sh} can be executed to automatically run the Infer tool using default options through the course -tools docker image \textit{bugcounting/satools:y23}. The analysis outputs +tools docker image \textit{bugcounting/satools:y23}. + +The script selects Java 17 to compile the project as this is required to not +make the Animal Sniffer Maven build plugin fail with the message ``This feature +requires ASM7''. + +The script executes Infer in Maven capture mode executing the \textit{compile} +and \textit{test} targets while disabling the Apache RAT software license +checker (which fails for this release). Since unit tests are executed, running +the script before and after the warning guided refactoring ensures the fixes I +introduce do not introduce regressions. + +The analysis outputs are located in \textit{before/infer-out/report.txt}. \section{Results} @@ -143,47 +155,130 @@ Table \ref{tab:infer} shows the results of the analysis performed by Infer providing comments on true and false positives and the actions taken for each result. -In total - -\begin{table}[] +\begin{table}[H] \small - \begin{tabular}{@{}llp{1.2cm}p{0.8cm}p{6cm}@{}} + \begin{tabular}{@{}llp{1.2cm}p{0.65cm}p{6cm}@{}} \toprule - \textbf{File} & \textbf{Line} & \textbf{Kind} & \textbf{True Pos.} & - \textbf{Comment} \\ \midrule -AnnotationUtils.java & 72 & Null & Yes & -- \\ -reflect/MethodUtils.java & 486 & Null & Yes & -- \\ -reflect/FieldUtils.java & 126 & Null & Yes & -- \\ -concurrent/MultiBackgroundInitializer.java & 160 & Thread Safety & Yes & -- \\ +\textbf{File} & \textbf{Line} & \textbf{Kind} & \textbf{True Pos.} & +\textbf{Reason why flagged expression is a false positive} \\ \midrule +AnnotationUtils.java & 72 & Null & Yes & \multirow{4}{6cm}{--} \\ +reflect/MethodUtils.java & 486 & Null & Yes & \\ +reflect/FieldUtils.java & 126 & Null & Yes & \\ +concurrent/MultiBackgroundInitializer.java & 160 & Thread Safety & Yes & \\ \midrule -builder/ToStringBuilder.java & 223 & Null & ?? & \multirow{2}{6cm}{??} \\ +builder/ToStringBuilder.java & 223 & Null & No & \multirow{2}{6cm}{Infer flags + the value \texttt{null} when used as a nullable method argument} \\ builder/ReflectionToStringBuilder.java & 131 & Null & No & \\ \midrule time/DurationUtils.java & 142 & Null & No & The method which may return a null - value returns a non-null value if its parameter is non-null, and a - non-null parameter is given \\ +value returns a non-null value if its parameter is non-null, and a +non-null parameter is given \\ \midrule - CharSetUtils.java & 181 & Null & No & According to \textit{java.lang} documentation, the - method always returns a non-null value \\ +CharSetUtils.java & 181 & Null & No & According to \textit{java.lang} +documentation, the method always returns a non-null value \\ \midrule reflect/FieldUtils.java & 341 & Null & No & - \multirow{4}{6cm}{a utility method is used to guard the dereference reported - with an exception throw} \\ - reflect/FieldUtils.java & 385 & Null & No & \\ - reflect/FieldUtils.java & 599 & Null & No & \\ - reflect/FieldUtils.java & 644 & Null & No & \\ +\multirow{4}{6cm}{A utility method is used to guard the dereference reported +with an exception throw} \\ +reflect/FieldUtils.java & 385 & Null & No & \\ +reflect/FieldUtils.java & 599 & Null & No & \\ +reflect/FieldUtils.java & 644 & Null & No & \\ \midrule reflect/MethodUtils.java & 987 & Null & No & The method which may return a null - value returns a non-null value if its parameter is non-null, and a - non-null parameter is always given according to the \textit{java.lang} - documentation for the inner nested method \\ \bottomrule +value returns a non-null value if its parameter is non-null, and a +non-null parameter is always given according to the \textit{java.lang} +documentation for the inner nested method \\ \bottomrule \end{tabular} \caption{Results of the Infer static analysis tool execution with default options. \textit{True Pos.} denotes whether a result is a true positive, while \textit{Kind} denotes with \textit{Null} and \textit{Thread Safety} - respectively null dereference issues and thread safety violations.} + respectively null dereference warnings and thread safety violations.} \label{tab:infer} \end{table} +In total Infer reports 13 warnings, 12 of which are null dereference warnings +and 1 is a thread safety violation. Of all warnings, 4 are true positives and 9 +are false positives, resulting in a false positive ratio of over 69\%. These +values are summarized in table \ref{tab:num}. + +\begin{table}[H] + \centering +\begin{tabular}{@{}ll@{}} +\toprule +Total number of warnings: & 13 \\ \midrule +Null dereference warnings: & 12 \\ +Thread safety violations: & 1 \\ \midrule +True positives: & 4 \\ +False positives: & 9 \\ \bottomrule +\end{tabular} + \caption{Quantitative results of the static analysis performed by Infer.} + \label{tab:num} +\end{table} + +\subsection{False Positives} + +As can be deduced from table \ref{tab:infer}, Infer especially struggles at +determining Vthe null safety of nested method calls or non-trivial data flow +paths. This is sometimes caused by insufficient knowledge of the nullability +contracts of the Java standard library (e.g. \textit{java.lang} package). + +In other cases, the flagged expression is guarded by an utility method throwing +an exception if its value is indeed \texttt{null}. One of such guards is the +\mintinline{java}{static Validate.notNull(Object, String, Object...)} method, +which checks if its first argument is null and throws a +\texttt{NullPointerException} if so. + +Additionally, Infer seems to struggle with boxed primitives and not +understanding that their value is always non-null by construction. As an example +I provide the warning reported in the file \textit{time/DurationUtils.java}: + +\begin{listing}[H] +\begin{minted}[linenos,firstnumber=139]{java} +public static int toMillisInt(final Duration duration) { + Objects.requireNonNull(duration, "duration"); + // intValue() does not do a narrowing conversion here + return LONG_TO_INT_RANGE.fit(Long.valueOf(duration.toMillis())).intValue(); +} +\end{minted} + \caption{Method \textit{toMillisInt(Duration)} of class + \textit{time.DurationUtils} in Apache Commons Lang 3.12.0.} +\end{listing} + +Here Infer reports that the first argument of +\mintinline{java}{LONG_TO_INT_RANGE.fit(Long)} may be null. However, the return +value of \mintinline{java}{Long.valueOf(long)} is always non-null since the +method simply boxes its \mintinline{java}{long} argument. + +Finally, some warnings are caused by Infer flagging the use of the \texttt{null} +keyword as a method argument for methods that would accept a nullable argument +in that position without causing null dereferences. This warning could point to +a potential ambiguity is selecting the right method to call at +compile time given the argument types (i.e. static dispatching), as +\texttt{null} is a valid expression of all object types. For example, in the +given class: + +\begin{minted}{java} +class C { + m(String s) {} + m(Object o) {} +} +\end{minted} + +A call to \mintinline{java}{C.m(null)} would be ambiguous as \texttt{null} is +both a \texttt{String} and an \texttt{Object}, thus a cast to either type woule +be required to make the code compile. However, the warnings reported by Infer do +not present such ambiguity as in those cases overloaded methods have different +numbers of parameters. Additionally, even introducing explicit casts for all +\texttt{null} arguments does not extinguish the warning. Therefore, I can not +find a conclusive explaination on the nature of the false positive, however I +can attest to these instances being indeed false positives by having manually +verified that the methods in question indeed can accept a null value without +causing null dereferences. + +\subsection{True Positives} + +In this section I now cover the warnings that are true positives and thus are +causes for refactoring. + \end{document}