1.配置 FindBugs

打开 Eclipse,通过【Window -> Preferences】下【Java -> FindBugs】查看 FindBugs的
配置情况。问题: 这里可以配置 FindBugs的哪些特性?

选择导入的项目,通过【Window -> Preferences】下【Java -> FindBugs】查看 FindBugs的

配置情况,得出由图所示可知FindBugs的特性:

1.Run Automatically开关

(1)当此项选中后,FindBugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,FindBugs就会运行,并将相应的信息显示出来。

(2)当此项没有选中,你只能每次在需要的时候自己去运行FindBugs来检查你的代码。

2.Minimum confidence to report选择项

这个选择项是让你选择哪个级别的信息进行显示,有Low、Medium、High三个选择项可以选择,很类似于Log4J的级别设置。 比如:

(1)你选择了High选择项,那么只有是High级别的提示信息才会被显示。

(2)你选择了Medium选择项,那么只有是Medium和High级别的提示信息才会被显示。

(3)你选择了Low选择项,那么所有级别的提示信息都会被显示。

此外,还有一个拖动条供选择rank等级(1-20),rank越高,严重程度越低,显示的信息越多。

3.Reported(visible) bug categories选择项(左侧是分类,右侧是等级)

在这里是一些显示Bug分类的选择:

Correctness关于代码正确性相关方面的

Performance关于代码性能相关方面的

Multithreaded correctness关于代码多线程正确性相关方面的

Malicious code vulnerability关于恶意破坏代码相关方面的

Internationalization关于代码国际化相关方面的

严重程度:Scariest>Scary>Troubling>Of concern,这个和rank的设置1-20是匹配的。

4. Detector configuration选择项

在其他的tab标签页中,显示了更多更详细的bug check configuration,用户可以根据需要进行选择和配置。

2.在 Sudoku上运行 FindBugs

打开 Eclipse,在 Sudoku项目上右键选择 FindBugs。
A. 查看 FindBugs发现的问题,一共有几类问题,各是什么含义?将这几类问题翻译成
中文;

答:三类问题。如图:

1. 对数组使用toString方法

Bug: Invocation of toString on combination in solver.Matrix.main(String[])

The code invokes toString on an array, which will generate a fairly useless result such as [C@16f0472. Consider using Arrays.toString to convert the array into a readable String that gives the contents of the array. See Programming Puzzlers, chapter 3, puzzle 12.

解释:在数组上调用toString,这将得到一个没有用处的结果。在考虑使用数组时,toString将数组转换成一个可读的字符串数组的内容。

2. matrix .compute()在循环中使用+连接字符串

Bug: solver.Matrix.compute() concatenates strings using + in a loop

The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration. 
Better performance can be obtained by using a StringBuffer (or StringBuilder in Java 1.5) explicitly.

解释:该方法似乎是在循环中使用连接构建字符串。在每次迭代中,字符串被转换为

StringBuffer/StringBuilder,附加到字符串,然后再转换回字符串。这可能导致迭代次数的二次成本,因为不断增长的字符串在每次迭代中重复出现。

通过显式地使用StringBuffer(或Java 1.5中的StringBuilder)可以获得更好的性能。

3.读取问题

Bug: Unread field: gui.MainWindow.m_gameOutput

This field is never read.  Consider removing it from the class.

解释:存在未读字段:gui.MainWindow.m_gameOutput,也就是说这个字段永远不会被读取。

B. 如何解决 FindBugs指出的问题?请修改 Sudoku程序,以改正所有 FindBugs指出的
问题。注意:同类错误仅需记录一次修改思想即可。

答:修改方法如下:

1. 对数组使用toString方法

解决方法:可以利用Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法

使用时需要导入包:import java.util.Arrays;

修改之后,我们发现bug已经消失。

解决结果:

2. matrix .compute()在循环中使用+连接字符串

(由于思想一样,这里只举例一个来修改)

旧代码为:

String fixed = "";int total = 0;for(int i=0, rows = m_field.length; i<rows; i++){for(int j=0, cols = m_field[i].length; j<cols; j++) {total ++;index ++;if(m_field[i][j] == 0)m_unfixedNumber ++;elsefixed += m_field[i][j];              }}

将原来的代码改成:

StringBuffer buf = new StringBuffer();int total = 0;for(int i=0, rows = m_field.length; i<rows; i++){for(int j=0, cols = m_field[i].length; j<cols; j++) {buf.append(m_field[i][j]);}}{      String fixed = buf.toString();

解决结果:

Normal confidence只剩9个。该Bug已经解决。

3.读取问题

解决方法:可以将语句private GameOutput                     m_gameOutput = null; 与m_gameOutput = new GameOutput(m_sashForms, SWT.BORDER, m_gameField);语句删除即可

解决结果:

Unread field已经不再提示。该Bug已经解决。

软件测试实验 FindBugs相关推荐

  1. 软件测试实验4白盒测试,软件测试实验报告白盒测试

    <软件测试实验报告白盒测试>由会员分享,可在线阅读,更多相关<软件测试实验报告白盒测试(8页珍藏版)>请在人人文库网上搜索. 1.软件测试与质量课程实验报告实验3:白盒测试姓名 ...

  2. 前一天日期软件测试需求,软件测试实验日期前一天.doc

    <软件测试实验日期前一天.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<软件测试实验日期前一天.doc>文档请在天天文库搜索. 1.软件测试实 ...

  3. qtp软件测试网站实验报告,软件测试实验报告-QTP的使用

    软件测试实验报告-QTP的使用 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 西南科技大学计算机学院实验报告实验名称 QTP的使丿tl ...

  4. 软件测试实验课ppt,软件测试实验Jmppt课件.ppt

    软件测试实验Jmppt课件 软件测试实验三 Jmeter walkerlm@ Jmeter agenda Jmeter简介 Jmeter安装 脚本录制 脚本开发 Web压力测试 数据库测试性能测试 上 ...

  5. 黑龙江大学软件测试实验报告

    软件测试 实  验 指 导 书 黑龙江大学软件学院 实验要求 在<软件测试>的课程实验过程中,要求学生做到: (1)预习相关理论. (2)仔细阅读实验内容提纲,记录测试中所遇到的主要问题, ...

  6. 软件测试性能实验报告,软件测试实验报告.doc

    软件测试实验报告 实验报告 课程名称 软件测试技术 实验项目名称 性能测试工具LoadRunner的使用 班级与班级代码 实验室名称(或课室) 专 业 软件工程 任课教师 学 号: 姓 名: 实验日期 ...

  7. 5种常用翻译软件测试实验

    5种常用翻译软件测试实验 摘要 引言 实验设计 结论 比较 摘要 测试了五种现有的翻译软件,基于不同文本的翻译准确度.将初始中文文本与迭代翻译后的中文文本进行文本相似度计算,得出最优的翻译软件.实验结 ...

  8. 软件测试实验五脚本扩展,软件测试实验五

    1.内蒙古工业大学信息工程学院实 验 报 告课程名称: 软件测试 实验名称: "海信社区"性能测试 实验类型: 验证性 综合性设计性实验室名称: 软件实验室 班级: 软件12-2 ...

  9. 软件测试文件路径,软件测试---实验2-基本路径测试法

    <软件测试---实验2-基本路径测试法>由会员分享,可在线阅读,更多相关<软件测试---实验2-基本路径测试法(4页珍藏版)>请在人人文库网上搜索. 1.实验2 基本路径测试法 ...

最新文章

  1. Myeclipse中修改项目默认编码还是乱码?一步永久解决!
  2. Ferderweisser
  3. 【论文解读】FcaNet:频率通道注意力网络论文解读
  4. 画箱线图_箱线图的N种画法
  5. 使用DDD、事件风暴和Actor来设计反应式系统
  6. matlab曲线拟合 新浪,Matlab曲线拟合
  7. EasyUI扩展方法
  8. springboot自定义starter启动器
  9. 【DPS专题】工业篇:从“低谷”走向“巅峰”,DPS如何成为工业智能制胜法宝?...
  10. 地理编码的概念及作用
  11. snipaste滚动截图方法_Snipaste——这是我用过最好用的截图贴图工具!
  12. 知乎:1.03亿月活用户,获得感战略下的内容质量和商业化布局难平衡
  13. 麻将开金算法java代_通用麻将胡牌算法
  14. 类微信卡包应用实现(附源码)
  15. Swift可选类型(Optional)之星耀
  16. word文档打不开的常见原因?好的处理方法
  17. 开手游该如何选用服务器?
  18. php 如何获取真实的客户端ip
  19. AVA Actions Dataset 详解
  20. JDK8 stream流的骚操作

热门文章

  1. 也谈隐藏盘符等windows 的管理员的策略实现
  2. 学生认证,专业版pycharm
  3. c++类成员函数做函数参数
  4. 董付国老师与Python大事记
  5. provider: 命名管道提供程序, error:provider: 命名管道提供程序, error:40 - 无法打开到 SQL Server 的连接
  6. 电脑本地连接,电脑怎么设置本地连接具体方法
  7. 写给ERP选型的伙伴们!
  8. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...
  9. python爬虫软件-3款你必须知道的爬虫工具
  10. 静态语言和脚本语言的区别