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能够有效地帮助程序开发人员检查代码的规范问题,使开发人员能够从这项重要但很枯燥的工作中解脱出来,从而节约大量的时间。
正在阅读:
CheckStyle-软件测试06-11
ICU人工气道吸痰 临床操作指南05-23
小说城南旧事读后感例文参考04-07
大学活动策划书(多篇范文)10-16
2017-2022年中国杂粮市场调查与发展趋势研究报告(目录)08-24
浙江省诸暨市草塔中学2020学年高二语文12月月考试题(无答案)04-29
2013年九年级10月数学月考试题04-30
世界上骂人最毒的话02-07
读后感《天才在左,疯子在右》12-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 软件测试
- CheckStyle
- 2011石家庄信息技术中考选择题
- 04-05(2)《离散数学》期末考试试卷(A)
- 全品作业本 高中物理 选修3-1 作业正文(附答案)
- 注射剂除热源
- 心理健康题
- 智慧女人一生要明白的88道理,学会做人是女人一生的课题
- 商学院基层团支部\\"star\\"成长计划学习培训方案
- 网购消费者权益保护概述
- KD3800压机操作说明书
- FBD系列矿用隔爆型压入式塑料叶轮对旋轴流局部通风机的创新与改
- 工程技术管理办法
- 《管理经济学》总复习
- 打字员寒暑期实践心得
- 小学数学北师大版六年级上册 一 圆《圆的认识(二)》优质课公开
- “保护校园绿地,维护和谐校园”方案征集活动策划
- 如何更快的学会使用键盘上每个键
- 县领导在镇敬老院开院剪彩仪式上的讲话
- 王静龙《非参数统计分析》(1-6章)教案
- 红杉资本沈南鹏--他是《欢乐颂》谭宗明的人物原型,朋友圈价值2.
- 2016-2021年图书设备行业深度调查及发展前景研究报告