其神若何,月射寒江。

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

上一篇 / 下一篇  2010-04-08 14:21:54 / 个人分类:白盒测试研究

在我们的代码当中,select * from tablename类型的代码太多了。

或许只是需要一列,但是把所有的列都查询出来了。由此带来的性能问题将会是影响数据库、应用、网络三个层次。所以我们提倡查询的时候只是查询我们自己需要的列。开发这个Findbugs自定义检测器,目的就是检查这类的问题,提醒开发注意这方面的问题。

下面介绍检测器的实现原理:

 

 

1.1.1       PERFORMANCE _DB_SELECT_ALLFIELD

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     isOpen

是否启用该检测器。

 

1.1.1.5      误报说明

1)只是检查String的字符串

对于StringBuffer是没有进行检查。

2)有的场景还是需要查询所有字段的

需要判断是否真正需要查询所有字段

1) 对于拼凑String也是单独判断的

是单独判断每个String不是拼凑后的结果


TAG: Findbugs findbugs River

 

评分:0

我来说两句

xiaohanjiang

xiaohanjiang

River.liu又名小寒江。曾经从事多年JAVA软件开发工作,这几年一直从事软件测试工作。多年来,一直致力于软件工程、软件开发、软件测试方面的研究。不喜欢自称高手,不愿意自封资深;科学研究讲究的是务实、实践。真理、真知才是硬道理。茫茫海洋,我只希望我的每个理念能游弋于业界之间。我的思想能在你的脑海中徜徉。

日历

« 2024-03-28  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 39281
  • 日志数: 52
  • 建立时间: 2009-12-15
  • 更新时间: 2011-03-14

RSS订阅

Open Toolbar