《CheckStyle-软件测试.doc》由会员分享,可在线阅读,更多相关《CheckStyle-软件测试.doc(5页珍藏版)》请在金锄头文库上搜索。
1、静态代码检测工具CheckStyleCheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。CheckStyle检验的主要内容 包括:lJavadoc注释 l命名约定 l标题 lImport语句 l体积大小l空白 l修饰符 l块l代码问题l类设计 l混合检查(包活一些有用的比如非必须的System.out和printstackTrace)从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代
2、码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。Checkstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。一、Checkstyle的安装按照实验指导书完成。二、checkstyle的使用1.检查单个文件被检查的代码:import java.util.Scanner;public class Weather public static void main(String args) final int NUMBER_OF_DAYS = 10; final int NUMBER_OF_HOURS = 24; do
3、uble data = new doubleNUMBER_OF_DAYSNUMBER_OF_HOURS2; Scanner input = new Scanner(System.in); / Read input using input redirection from a file for (int k = 0; k NUMBER_OF_DAYS * NUMBER_OF_HOURS; k+) int day = input.nextInt(); int hour = input.nextInt(); double temperature = input.nextDouble(); doubl
4、e humidity = input.nextDouble(); dataday - 1hour - 10 = temperature; dataday - 1hour - 11 = humidity; / Find the average daily temperature and humidity for (int i = 0; i NUMBER_OF_DAYS; i+) double dailyTemperatureTotal = 0, dailyHumidityTotal = 0; for (int j = 0; j check code with checkstyle,检查错误即可。
5、练习要求将输入的代码Weather类修改成为符合CheckStyle某种规则的编码风格。请在实验报告中说明CheckStyle检验前的代码和检验后的代码区别,并分别列出修改的每条代码是基于哪条规则做出的修改。修改后的代码(每行错误的类型在这行代码上方的注释中):package checksytletest;import java.util.Scanner; /* * author sure * */public class Weather /缺少 Javadoc 。class def modifier 缩进了4个缩进符,应为0个。 /class def lcurly 缩进了4个缩进符,应为0个
6、。 /* * param args 字符串数组 */ public static void main(String args)/缺少 Javadoc 。 /必须匹配表达式: a-za-zA-Z0-9*$ final int nUMBEROFDAYS = 10; /method def 子元素缩进了19个缩进符,应为8个 /必须匹配表达式: a-za-zA-Z0-9*$ 。 final int nUMBEROFHOURS = 24; /method def 子元素缩进了19个缩进符,应为8个 double data = new doublenUMBEROFDAYSnUMBEROFHOURS2;
7、/- Resource leak: input is never closed /- method def 子元素缩进了20个缩进符,应 /为8个。 Scanner input = new Scanner(System.in); / Read input using input redirection from a file /- 第 62 个字符 应位于新 /行。 /- for 缩进了20个缩进符,应 /为8个。 for (int k = 0; k nUMBEROFDAYS * nUMBEROFHOURS; k+) /for 子元素缩进了22个缩进符,应为12个 int day = inpu
8、t.nextInt(); int hour = input.nextInt(); double temperature = input.nextDouble(); double humidity = input.nextDouble(); dataday - 1hour - 10 = temperature; dataday - 1hour - 11 = humidity; /for rcurly 缩进了20个缩进符,应为8个 / Find the average daily temperature and humidity /for 缩进了20个缩进符,应为8个。 /第 48 个字符 应位于
9、新行。 for (int i = 0; i nUMBEROFDAYS; i+) /- 每一个变量的定义必须在它的声明处,且在同 /一行。 /- for 子元素缩进了22个缩进符,应为12个。 double dailyTemperatureTotal = 0; double dailyHumidityTotal = 0; /- for 缩进了22个缩进符,应为 /12个。 /- 第 49 个字符 应位于新行。 for (int j = 0; j nUMBEROFHOURS; j+) dailyTemperatureTotal += dataij0; dailyHumidityTotal += d
10、ataij1; / Display result /for 子元素缩进了22个缩进符,应为12个。 System.out.println(Day + i + s average temperature is + dailyTemperatureTotal / nUMBEROFHOURS); System.out.println(Day + i + s average humidity is + dailyHumidityTotal / nUMBEROFHOURS); input.close(); 修改后的代码检查结果:可以看到修改后的代码中前方的放大镜标志消失了,表明代码符合规范。总结Checkstyle能够有效地帮助程序开发人员检查代码的规范问题,使开发人员能够从这项重要但很枯燥的工作中解脱出来,从而节约大量的时间。