从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

时间: 2024-10-30 23:07:01

从FindBugs中学Java【四】的相关文章

从FindBugs中学Java【一】

findbug 这里[中文列表]: http://svn.codehaus.org/sonar-plugins/tags/sonar-l10n-zh-plugin-1.1/src/main/resources/org/sonar/l10n/findbugs_zh.properties rule.findbugs.IMSE_DONT_CATCH_IMSE.name=不良实践 - 捕获可疑IllegalMonitorStateException rule.findbugs.BX_BOXING_IMM

从FindBugs中学Java【二】

IMSE_DONT_CATCH_IMSE java.lang  Class IllegalMonitorStateException java.lang.Object   java.lang.Throwable       java.lang.Exception           java.lang.RuntimeException               java.lang.IllegalMonitorStateException All Implemented Interfaces:

从FindBugs中学Java【五】

13. TLW_TWO_LOCK_WAIT TLW: Wait with two locks held (TLW_TWO_LOCK_WAIT) Waiting on a monitor while two locks are held may cause deadlock.   Performing a wait only releases the lock on the object being waited on, not any other locks.   This not necess

从FindBugs中学Java【三】

2. BX_BOXING_IMMEDIATELY_UNBOXED double a = 100d; double d = Double.valueOf(a); Primitive value is boxed and then immediately unboxed. 非必要的装箱并立即拆箱操作. Intellij 也会给这样的提示: 没什么好说的 3. IJU_SETUP_NO_SUPER 好像是个遗留问题,出现在JUnit3的时代,e.g. JUnit3里会这么做 public class 

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new

Java四种线程池

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor 时间:2015-10-20 22:37:40      阅读:8762      评论:0      收藏:0      [点我收藏+] 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异

Java四类八种基本数据类型

java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 boolean(它只有两个值可取true false) 第四类:字符型 char 字节:boolean 布尔型              1/8 byte 字节类型                1char 字符型                  2  一个字符能存储一个中文汉字short 短整型                 2int 整数类型   

java 四种内部类的学习

内部类 定义在外部类的内部, 编译后是独立存在的类 可以访问外部类的私有成员,且不破坏封装 成员内部类 用"外部类类名.this"访问外部类的当前对象 创建对象:先创建外部类对象,再通过"外部类对象.new 内部类类名"创建内部类对象 静态内部类 只能访问外部类的静态成员 创建对象:直接用"new 外部类类名.内部类类名()" 局部内部类 定义在外部类的方法内部 作用范围:从定义开始到所在的代码块结束 同局部变量 不仅可以访问外部类的成员,还可以

java四种数组排序

数组的四种排序 1.快速排序法Arrays.sort(); 用法1.sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序. sort(byte[] a, int fromIndex, int toIndex) 对指定 byte 型数组的指定范围按数字升序进行排序. sort(char[] a) 对指定的 char 型数组按数字升序进行排序. sort(char[] a, int fromIndex, int toIndex) 对指定 char 型数组的指定范围按数字升序进行