前言

转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/11825592.html】,谢谢!

如今,代码规范几乎是当下稍有追求的团队都要求做到的,但是对于Java编码规范,不同的公司或团队却有着不同的标准。尽管官方提供了一些标准,但是在基本规则的基础上,各大公司又有自己的规范,比如Sun,Google,华为,阿里等都推出了自己的规范标准,所以对规范进行定制,是常有的需求。而CheckStyle就是这样一款优秀的代码规范审查工具,它允许用户自定义审查标准,而无需人工审查,也无需受限于某一套规则。CheckStyle提供了命令行和插件两种使用方方式,本文将结合Android Studio导入插件的使用方式,来介绍它,希望大家能够好好享受这款插件。

一、CheckStyle简介

Checkstyle是一个开发工具,可以帮助程序员编写遵循编码标准的Java代码。它自动化了检查Java代码的过程,以避免人类完成这一枯燥(但很重要)的任务。这使得它非常适合那些希望实施编码标准的项目。Checkstyle是高度可配置的,可以支持几乎任何编码标准,默认内置Sun Java编码规范和Google Java编码规范两套配置文件,我们也可以根据自己的需要配置自己的规范。

二、CheckStyle的检查项

CheckStyle对Java编码规范的检查项主要包括了如下14项:

(1)Annotations:注解。比如deprecad、override、Suppress Warnings等注解符号以及注解风格使用等。

(2)Block Checks:代码块检测。比如代码块嵌套、空代码块等代码块问题。

(3)Class Design:类设计。比如类的修饰符,设计扩展性,构造函数等相关的问题。

(4)Coding编码问题:代码中出现的漏洞,性能,冗余等代码相关的问题。

(5)Headers:头文件。

(6)Imports:包的导入问题。比如标准中要求避免使用统配导入、避免静态导入、导入顺序,非法导入等。

(7)Javadoc Comments:文档注释。包、类、方法等的归档注释问题。

(8)Metrics:度量。比如布尔表达式复杂度、循环复杂度等各种复杂度问题。

(9)Miscellaneous:杂项。比如代码缩进,一些有用的但非必须的System.out和printstackTrace等问题。

(10)Modifiers:修饰符。比如修饰符是否用对,是否多余,修饰符顺序等。

(11)Naming Conventions:命名约定。包、类、方法、变量等的命令问题。

(12)Regexp:正则表达式。

(13)Size Violations:尺寸超标。比如匿名内部类长度,文件长度,代码每一行长度,方法数量,等超过规范。

(14)Whitespace:空格。在规范中,要求某些操作符,指定标记等周围需要有空格。

参考:https://blog.csdn.net/cainiao_accp/article/details/77444028

三、CheckStyle的安装

与其它的插件一样,CheckStyle插件也提供了直接在AS的仓库中安装和手动离线安装两种方式。

1、直接从AS的插件库下载安装

至于如何在AS插件库中安装插件,在我的另外一篇介绍FindBugs的文章【https://www.cnblogs.com/andy-songwei/p/11820564.html】中已经介绍过了,这里就不赘述了。简单说一下就是File > Settings > Plugins > Browse repositories 搜索 “CheckStyle”,找到“CheckStyle-IDEA”这一项,按照提示进行安装,然后重启即可。笔者采用这种方式安装时,提示了好几次网络异常,资源无响应等现象,不过多尝试几次就好了。

2、手动下载并从磁盘安装

请从如下地址获取离线安装包:

链接:

提取码:

四、使用CheckStyle进行分析

1、启动CheckStyle

(1)在AS的左下角有个“CheckStyle”按钮,从这里可以打开CheckStyle面板,从中启动扫描功能。该面板各项功能在下文会详细介绍。

(2)在Java文件的编辑界面点击右键,在弹出的菜单中找到“Check Current File”,点击即可开始扫描。默认是检测当前文件,在控制面板中可以选择检测范围。

2、检查结果

检查完后会显示如下CheckStyle面板,会展示检查出来的各项问题点。该面板各个区域的功能,后面再详细介绍。

通过点击检查结果列表区域,可以定位到问题代码源码处。

五、CheckStyle面板介绍

1、工具栏

(1)Close CheckStyle Window:关闭CheckStyle面板窗口

(2)Stop the running scan:停止当前正在运行的扫描

(3)Check Current File:在编辑器中当前文件上运行CheckStyle

(4) Check Module:在当前Module上运行CheckStyle

(5)Check Project:在当前项目上运行CheckStyle

(6)Check All Modified Files:检查所有修改的文件,结合版本控制工具一起使用。

(7)Check Files in the Current Change List:检查当前change list中的文件

(8)Reload Rules files:清理规则文件(即配置文件)缓存和黑名单,强制重新加载改变后的规则文件。

(9)Autoscroll to Source:自动滚动到错误和警告的源码位置处。

(10)Expand All:展开所有工具窗口(即控制面板)的元素

(11)Collapse All:收起所有工具窗口的元素

(12)Display Errors:展示错误,结果窗口会显示

(13)Dispaly Warnings:展示警告

(14)Display Information Results:展示信息结果

对照说明和每一项的运行结果,各个功能项的作用就很容易理解了。

2、选择检查规则

②处需要事先选择好扫描所采用的代码规范配置文件,默认是没有选择的。

默认这里只有“Sun Checks”和“Google Checks”,“Huawei_CheckStyle”是华为的规范配置,“songwei-style”是自己配置的规范。选择其中某项后,才能以该项对应的配置文件来进行检查。如何添加/删除配置文件,后文会再讲到。

3、检查结果列表

③处显示检查后的结果,以树状结果展示。点击具体某一项后,可以直接跳到问题代码处。

六、配置CheckStyle

File > Settings > Checkstyle就可进入到如下配置界面。

这里我们介绍部分区域功能,其它部分比较简单,就不多说了。

1、扫描范围

选择扫描范围,每一项含义比较简单,就不多介绍了。

2、管理配置文件(这一项很重要)

这里面默认的只有“Sun Checks”和“Google Checks”,后面有“bundled”标识,标识是捆绑在CheckStyle插件中的。要采用哪套规则作为规范标准,需要选中该项。左边的按钮就是添加新的配置文件或者对选中的配置项删除或者编辑。这里着重介绍一下添加新配置项,点击“+”按钮弹出如下对话框:

配置好后,按照向导操作即可。

七、定制配置文件

由于Sun和Google的检查过于严格,所以一般我们需要自己配置或者使用国内业界比较知名的成熟配置方案,比如华为的配置文件。如果我们要完全自己定制的话,可以参照Sun、Google、华为等的模板进行修改。这里提供这三种配置文件的路径:

(1)华为配置文件

链接:https://pan.baidu.com/s/1tlvHtezgjwRIUA8DBVYFUQ

提取码:qxji

(2)Sun Check配置文件

https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/sun_checks.xml

(3)Google Check配置文件

https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

这些文件都是以 <module>...</module>对的形式组成的,这每一对就表示了一条匹配的规则。如下就是一条对“JavadocType”的匹配规则,如果不需要检查这一项,可以直接注释掉,或者根据需要做其它修改。

 <module name="JavadocType">
<property name="authorFormat" value="\S"/>
<property name="scope" value="protected"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
</module>

如果需要了解每一个属性的作用等更深入的知识,可以查看CheckStyle官网:https://checkstyle.org/index.html进行学习,这里就不深入介绍了。

结语

本文只介绍了CheckStyle常见的一些使用方法,一定还有很多很牛的功能,希望读者们多多探索,多多交流,共同进步,谢谢!

CheckStyle,定制属于自己的Java编码规范的更多相关文章

  1. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

  2. Eclipse formater(google Java 编码规范)

    1. 谷歌Java编码规范 http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 2. 下载配置文件: https://co ...

  3. 标准的Java编码规范手册

    编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题.今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助. 编码规范的意义      ...

  4. 阿里Java编码规范

    详细,全面 很不错 阿里 Java编码规范

  5. Java基础学习总结(92)——Java编码规范之排版、注释及命名

    为使开发人员养成良好的开发习惯,编写可读性强.易维护的程序,结合以往资料,现整理Java编码规范,将之作为开发人员的参照依据. 一.排版 1.相对独立的程序块之间必须加空行 下列情况应该使用一个空行: ...

  6. Google 推出的 Java 编码规范(转)

    原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http: ...

  7. Google的Java编程风格指南(Java编码规范)

    这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是 ...

  8. 个人整理--Java编码规范

    编码规范对于开发人员来说是非常重要的,有以下几个原因: 1.一个软件的生命周期中,80%的花费在于维护 2.几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 3.编码规范可以改善软件 ...

  9. 阿里java编码规范考试总结

    前几天,考了阿里编码规范刚好80险过,总结出以下例题,答案有错,欢迎评论 1.关于方法的返回值是否可以为null,下列说法正确的是(BCD) A.方法的返回值可以为null,如果是集合,必须返回空集合 ...

随机推荐

  1. 前端深入之css篇|你真的了解“权重”吗?

    写在前面 权重这个概念,相信对许多进行过前端开发的小伙伴来说肯定并不陌生,有时候一个样式添加不上,我们就会一个 !important 怼上去,一切就好像迎刃而解了.但还有的时候,!important也 ...

  2. 正则表达式在Java中使用

    正则表达式 定义 用一组特殊的字符来描述一组字符串的格式 用于验证字符串是否满足格式 不关心字符串的内容是否有效 1. 基本正则表达式所谓正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式 ...

  3. [WP8.1]RSA 使用BouncyCastle 公钥解密

    写应用的时候遇到个服务器返回私钥加密过的数据 ,然后要在客户端用公钥解密的需求 ,一直没找到方法,应用搁置了一个学期,多方搜索,结论就是.net没有实现公钥解密的方法,要自己实现,于是硬着头皮开始看  ...

  4. FutureTask是怎样获取到异步执行结果的?

    所谓异步任务,就是不在当前线程中进行执行,而是另外起一个线程让其执行.那么当前线程如果想拿到其执行结果,该怎么办呢? 如果我们使用一个公共变量作为结果容器,两个线程共用这个值,那么应该是可以拿到结果的 ...

  5. Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器

    这是 Java 爬虫系列博文的第四篇,在上一篇 Java 爬虫遇上数据异步加载,试试这两种办法! 中,我们从内置浏览器内核和反向解析法两个角度简单的聊了聊关于处理数据异步加载问题.在这篇文章中,我们简 ...

  6. Jmeter Json List Element Assertion使用详解

    使用背景: jmeter4.0本身提供json Assertion断言,但当我们想要对返回的json list中的多个字段进行断言的时候,我们就会感到很无力.那么此时我们就可以通过Json List ...

  7. 自学导航页(待续ing)

    1 博客导航1.1 linuxlinux全线教程–提供了linux教程,服务器管理教程,BSD教程,还有编程语言(C/Java/Python/Perl),以及网络等全栈学习教程 1.2 存储技术NoS ...

  8. Redis之安装配置(Windows)

    下载 下载地址:https://github.com/MSOpenTech/redis/releases 解压,文件的名字重命名为redis. 打开文件夹,内容如下: 发送redis-server.e ...

  9. Android Studio:多包名打包

    来自:http://m.blog.csdn.net/u011315960/article/details/73251196 前言 最近有点小忙,博客都落下了,今天赶紧写点东西补上. 前几天商务找我,想 ...

  10. SD卡学习笔记

    最近调试了SD卡,遇到了一些小问题,记录一下,分享一下. 1.    SD卡 卡槽旁边的一个小开关 我们平时见过的SD卡都是小的SD卡,可以放在手机上的.现在大多数的开发板上也是小的SD卡的卡槽,插入 ...