在我们的代码当中,select * from tablename类型的代码太多了。
或许只是需要一列,但是把所有的列都查询出来了。由此带来的性能问题将会是影响数据库 、应用、网络三个层次。所以我们提倡查询的时候只是查询我们自己需要的列。开发这个Findbugs 自定义检测器,目的就是检查这类的问题,提醒开发注意这方面的问题。
下面介绍检测器的实现原理:
1.1.1 PERFORMANCE _DB_SELECT_ ALL FIE L D
1.1.1.1 作者
Author: River .liu
Date : 2010.4.7
Email : liuhanhong@yahoo.com.cn
1.1.1.2 原理
数据库查询语句,一般建议只是选择需要的字段而不是查询出所有的字段。比如 select * from tablename
可能只是需一列数据就可以了,但是会把所有的列查询出来。这样加重了数据库、应用和网络的负载。
1.1.1.3 开发原理
判断是否存在 select * from 类型的语句 .
存在下面条件,表示匹配:
>> 如果为 XXX select XXXXX from XXX 类型
>> 并且包含有字符‘ * ’,那么就认为匹配该 bug 模式
1.1.1.4 配置说明
配置文件 pluginConfig.properties 在插件的 jar 包里面,直接修改里面的配置项目,再放回 jar 包就可以了。
1.1.1.4.1 i sOpen
是否启用该检测器。
1.1.1.5 误报说明
1 )只是检查 String 的字符串
对于 StringBuffer 是没有进行检查。
2 )有的场景还是需要查询所有字段的
需要判断是否真正需要查询所有字段
1) 对于拼凑 String 也是单独判断的
是单独判断每个 String 不是拼凑后的结果