白盒测试之静态检查--sql查询所有列问题

在我们的代码当中,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 不是拼凑后的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值