5.TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED
6.TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS
7.TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK
8.TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK
9.TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK
10.TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK
11.TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED
12.TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED
今天这个比较有意思。
从JSR-305说起,findbugs的老大马里兰大学的Bill Pugh (William Pugh)牵头制订了JSR-305作为一套注解标准,用来帮助静态分析工具处理代码,开始很多大厂都在响应,不过这个标准很多年没更新了(since 11 Sep, 2006),而且跟JSR-308有很像,而且Java8里似乎都没有包含JSR-305。
有兴趣的,可以参考JSR-308, 在JEP-104上有Java应用的详细资料。
从一份FindBugs 2.0.3的资料上看,好像有类似的几个关键字都与JSR-305相关。本系列第一篇文章基于另一个版本的,所以索引中的例子少了几个。
模式 |
TQ |
速度 |
慢 |
缺陷类别 |
正确性 |
类型 |
edu.umd.cs.findbugs.detect.CheckTypeQualifiers |
||||
说明 |
检查变量是否违反由JSR-305类型的修饰符注解所指定的属性。 |
||||
报告模式 |
1. TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED (TQ, CORRECTNESS): 变量在不能带有一个类型修饰符的地方却带有这个类型修饰符 2. TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS (TQ, CORRECTNESS): 比较不兼容的类型修饰符所修饰的变量 3. TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK (TQ, STYLE): 将需要带有类型修饰符的变量标记为未知 4. TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK (TQ, STYLE): 将不需要带有类型修饰符的变量标记为未知 5. TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK (TQ, CORRECTNESS): 变量可能不带有一个类型修饰符,但使用时却总是需要它带有这个类型修饰符 6. TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK (TQ, CORRECTNESS): 变量可能带有一个类型修饰符,但使用时却禁止它带有这个类型修饰符 7. TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED (TQ, CORRECTNESS): 在需要变量带有一个类型修饰符的地方,却将这个变量注解为从不带有这个类型修饰符 8. TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED (TQ, CORRECTNESS): 变量在需要带有类型修饰符的地方却没有带有这个类型修饰符 |
休眠的标准,例子就不举了~