CheckStyle-软件测试

更新时间:2024-06-11 02:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

静态代码检测工具CheckStyle

CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。

CheckStyle检验的主要内容 包括: Javadoc注释 命名约定 标题 Import语句 体积大小 空白 修饰符 块 代码问题 类设计

混合检查(包活一些有用的比如非必须的System.out和printstackTrace)

从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。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;

double[][][]

data

=

double[NUMBER_OF_DAYS][NUMBER_OF_HOURS][2]; 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();

new

}

double humidity = input.nextDouble(); data[day - 1][hour - 1][0] = temperature; data[day - 1][hour - 1][1] = 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 < NUMBER_OF_HOURS; j++) { dailyTemperatureTotal += data[i][j][0]; dailyHumidityTotal += data[i][j][1]; }

// Display result

System.out.println(\ \ + dailyTemperatureTotal / NUMBER_OF_HOURS); System.out.println(\ \ + dailyHumidityTotal / NUMBER_OF_HOURS); } }

检查结果:

可以看到在有代码不规范的那一行都有放大镜的图标。

2.检查一个项目

选中工程选择checkstyle->check code with checkstyle,检查错误即可。

练习

要求将输入的代码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个。 /**

* @param args 字符串数组 */

public static void main(String[] args)//缺少 Javadoc 。 {

//必须匹配表达式: '^[a-z][a-zA-Z0-9]*$'

final int nUMBEROFDAYS = 10;

//'method def' 子元素缩进了19个缩进符,应为8个 //必须匹配表达式: '^[a-z][a-zA-Z0-9]*$' 。

final int nUMBEROFHOURS = 24;

//'method def' 子元素缩进了19个缩进符,应为8个

double[][][] data = new double[nUMBEROFDAYS][nUMBEROFHOURS][2]; //- 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 = input.nextInt(); int hour = input.nextInt();

double temperature = input.nextDouble(); double humidity = input.nextDouble(); data[day - 1][hour - 1][0] = temperature; data[day - 1][hour - 1][1] = humidity; //'for rcurly' 缩进了20个缩进符,应为8个 }

// Find the average daily temperature and humidity //'for' 缩进了20个缩进符,应为8个。

//第 48 个字符 '{' 应位于新行。 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 += data[i][j][0]; dailyHumidityTotal += data[i][j][1]; }

// Display result

//'for' 子元素缩进了22个缩进符,应为12个。

System.out.println(\ \

+ dailyTemperatureTotal / nUMBEROFHOURS);

System.out.println(\ \

+ dailyHumidityTotal / nUMBEROFHOURS);

}

input.close(); } }

修改后的代码检查结果:

可以看到修改后的代码中前方的放大镜标志消失了,表明代码符合规范。

总结

Checkstyle能够有效地帮助程序开发人员检查代码的规范问题,使开发人员能够从这项重要但很枯燥的工作中解脱出来,从而节约大量的时间。

本文来源:https://www.bwwdw.com/article/5s86.html

Top