从FindBugs中学Java【四】

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): 变量在需要带有类型修饰符的地方却没有带有这个类型修饰符

休眠的标准,例子就不举了~

 

Ref: 1  2  3  4  5

你可能感兴趣的:(从FindBugs中学Java【四】)