================================ =========Single Pattern========= ================================ SIC_INNER_SHOULD_BE_STATIC_ANON: new Type() { override some methods(...){...} }. Anonymous inner class declaration. 100% DE_MIGHT_IGNORE: try{...} catch (Exception e) {...}, Exception is not any specified. VA_FORMAT_STRING_USES_NEWLINE: "\n", this new line symbol is in a StringLiteral of a format method. UCF_USELESS_CONTROL_FLOW: if (conditional expression) {empty statements.}. UC_USELESS_CONDITION: if (conditional expressions) {...}. UC_USELESS_OBJECT: T1 v1 = new T1(). PZLA_PREFER_ZERO_LENGTH_ARRAYS: return null. EI_EXPOSE_REP: return variable; REC_CATCH_EXCEPTION: try{...} catch (Exception e) {...}, Exception is not any specific exception. SF_SWITCH_NO_DEFAULT: switch(exp) {case1:...case2:...}, without default statement. UWF_UNWRITTEN_FIELD: return exp / variable. SBSC_USE_STRINGBUFFER_CONCATENATION: stringVariable += stringExp, RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT: return method_invocation_exp. Method invocation statement returns a value, but does not assign the value to any variable. (High false positives.) NP_NONNULL_RETURN_VIOLATION: return null. (High false positives.) ================================ ========Multiple Patterns======= ================================ NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE: (1) for (File file : filesArray) {...} (2) for (int i =0; i < filesArray.length; i ++) {...} DM_CONVERT_CASE: (1) stringExp.toLowerCase(), 24,897 (2)stringExp.toUpperCase(). 10,406 MS_PKGPROTECT: (1) public static final T1 v1 = initializationExp, 2442 (2) protected static final T1 v1 = initializationExp. 175 (3) protected static T1 v1 = initializationExp. 158 (4) public static T1 v1 = initializationExp. 262, other 46 SIC_INNER_SHOULD_BE_STATIC: (1) this.v1 = v2; 590 (2) v1 = v2; 170 (3) super(...). 213 BC_UNCONFIRMED_CAST: (1) T1 v1 = (T(1) v2/exp, (2) v1 = (T(1) v2/exp, (3) ((T(1) v2).exp. ES_COMPARING_STRINGS_WITH_EQ: (1) stringExp1 == stringExp2 IfStatement, ReturnStatement, WhileStatement. (2) stringExp1 != stringExp2 RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE: (1) if (exp == null ...) {...}, (2) if (exp != null ...) {...}, (3) exp == null ? exp1 : exp2, (4) exp != null ? exp1 : exp2. DM_NUMBER_CTOR: (1) new Long(...), (2)new Integer(...), (3)new Short(...), (4)new Byte(...), (5)new Char(...). DM_FP_NUMBER_CTOR: (1) new Double(exp), (2)new Float(exp). DM_BOXED_PRIMITIVE_FOR_PARSING: (1) Integer.valueOf(str), (2)Long.valueOf(str). Comments: it contains fewer patterns than findbugs. EI_EXPOSE_REP2: (1) this.v1 = v2, (2) v1 = v2. 3700 BC_UNCONFIRMED_CAST_OF_RETURN_VALUE: (1) T1 v1 = (T) method_invocation(), (2) v1 = (T) method_invocation(), (3) ((T) method_invocation()).exp. ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD: (1) static_v1 = instance_exp1.method_invocation(), (2) v1 = instance_exp1.method_invocation(), (3) v1 = exp1, other variable assignment statement. RV_RETURN_VALUE_IGNORED_BAD_PRACTICE: (1) File.mkdirs(), (2) File.mkdir(), (3) File.delete(), (4) File.createNewFile(), (5) other exp.method_invoation() returns a value. SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING: (1) sqlExecutionStatement = StringLiteral1 + stringV1 + ... + StringLiteral2 + stringV2. (2) sqlRelatedVariable = sqlRelatedMethodInvocation(); OS_OPEN_STREAM: (1) StreamType v = new StreamType(...), 2) streamVariable = new StreamType(new StreamType2(...)), e.g., 1. FileOutputStream fos = new FileOutputStream(outFile); DM_DEFAULT_ENCODING: (1) new BufferedReader(new InputStreamReader(input)), 99+ (2) new StreamWriter(output); (3) stringExp.getBytes(), (4) new String(byteExp), (5) byteExp.toString(). ODR_OPEN_DATABASE_RESOURCE: (1) conn.createStatement(), (2) conn.createStatement.execute(...), (3) PreparedStatement st = conn.prepareStatement(), (4) DataBaseConnection conn = exp.getConnection(...). NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE: (1) return method_invocation(...), 2) return class_instance_creation(...). ======================================== ==========Inefficient Patterns========== ======================================== OBL_UNSATISFIED_OBLIGATION: (1) StreamType v = new StreamType(...), (2) streamVariable = new StreamType(new StreamType2(...)), (3) sqlStatementExp.executeMethod(). e.g., 1. FileOutputStream fos = new FileOutputStream(outFile); 2. ResultSet rs = sqlStmt.executeQuery(). OS_OPEN_STREAM_EXCEPTION_PATH: (1) StreamType v = new StreamType(...), (2) streamVariable = new StreamType(...). IS2_INCONSISTENT_SYNC: (1) return v1, (2) if(conditionalExp) {...}, (3) sqlStmt = stringLiteral1 + stringExp + stringLiteral2. not very consistent. OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE: (1) StreamType v = new StreamType(...), (2) streamVariable = new StreamType(new StreamType2(...)), (3) sqlStatementExp.executeMethod(). e.g., 1. FileOutputStream fos = new FileOutputStream(outFile); 2. ResultSet rs = sqlStmt.executeQuery(). WMI_WRONG_MAP_ITERATOR: for statement { ... MapVariable.get(keyExp) ... }. or NULL. Lack of enough information. ======================================== =====Redundant Inconsistent Pattern===== ======================================== MS_SHOULD_BE_FINAL: (1) public (28,302) static T1 v1 = exp. e.g., public static int maxStringLength = 65535. (2) protected (6,719) static T1 v1 = exp. URF_UNREAD_FIELD: (1) this.v1 = v2, (2)this.v1 = new T(), (3)private Type v = exp. Comments: it contains more patterns than findbugs. only pattern 3 is consistent. URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD: (1) this.v1 = v2, (2) public/protected (static) T1 v1 = exp; Comments: only 2 is consistent. (3) v1 = exp1. ======================================== =========Inconsistent Patterns========= ======================================== RI_REDUNDANT_INTERFACES: super(...). Comments: not very consistent. Locate on the position of super classes. ======================================== ==============Null Pattern============== ======================================== ===========Inaccurate Position========== NM_METHOD_NAMING_CONVENTION: null. Comments: violate on title, but position locates on body. SE_NO_SERIALVERSIONID: null. UPM_UNCALLED_PRIVATE_METHOD: null. (method body) UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR: null. inaccurate positions. ==========Specific Source Code========== DLS_DEAD_LOCAL_STORE: null. Variable assignment statements. Comments: specific source code. NP_NULL_ON_SOME_PATH: null. NP_LOAD_OF_KNOWN_NULL_VALUE: null. RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE: null.