01.CheckStyle代码检查工具

CheckStyle代码检查工具

1.介绍

Checkstyle 是一种开发工具,可帮助程序员编写符合编码标准的 Java 代码。它使检查 Java 代码的过程自动化,从而使开发者免于完成这项无聊(但重要)的任务。这使得它非常适合想要强制执行编码标准的项目

Checkstyle 可以检查源代码的许多方面。它可以发现类设计问题、方法设计问题。它还能够检查代码布局和格式问题

2.定义扫描规则

CheckStyle 有着众多扫描规则,涵盖种类非常之多,容易让人眼花缭乱。这里提供一份开源项目 Hippo4j 正在使用的规则文件,如需个性化可参考官网进行修改

创建自定义 checkstyle.xml 文件:

<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker"><module name="NewlineAtEndOfFile"/><module name="RegexpSingleline"><property name="format" value="printStackTrace"/><property name="message" value="Prohibit invoking printStackTrace in source code !"/></module><module name="TreeWalker"><module name="AvoidStarImport"><property name="excludes" value="java.io,java.net,java.lang.Math"/><property name="allowClassImports" value="false"/><property name="allowStaticMemberImports" value="true"/></module><module name="IllegalImport"/><module name="RedundantImport"/><module name="UnusedImports"/><module name="JavadocType"><property name="allowUnknownTags" value="true"/><property name="allowMissingParamTags" value="true"/><message key="javadoc.missing" value="Class Comments: Missing Javadoc Comments"/></module><!-- Do not scan method annotations for now --><!--<module name="JavadocMethod"><property name="tokens" value="METHOD_DEF"/><property name="allowMissingPropertyJavadoc" value="true"/><message key="javadoc.missing" value="Method Comments: Missing Javadoc Comments"/></module>--><module name="LocalFinalVariableName"/><module name="LocalVariableName"/><module name="PackageName"><property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /></module><module name="StaticVariableName"/><module name="TypeName"/><module name="MemberName"/><module name="MethodName"/><module name="ParameterName "/><module name="ConstantName"/><module name="ArrayTypeStyle"/><module name="UpperEll"/><module name="LineLength"><property name="max" value="200"/></module><module name="MethodLength"><property name="tokens" value="METHOD_DEF"/><property name="max" value="150"/></module><module name="ParameterNumber"><property name="max" value="5"/><property name="ignoreOverriddenMethods" value="true"/><property name="tokens" value="METHOD_DEF"/></module><module name="MethodParamPad"/><module name="TypecastParenPad"/><module name="NoWhitespaceAfter"/><module name="NoWhitespaceBefore"/><module name="OperatorWrap"/><module name="ParenPad"/><module name="WhitespaceAfter"/><module name="WhitespaceAround"/><module name="ModifierOrder"/><module name="RedundantModifier"/><module name="AvoidNestedBlocks"/><module name="EmptyBlock"/><module name="LeftCurly"/><module name="NeedBraces"/><module name="RightCurly"/><module name="EmptyStatement"/><module name="EqualsHashCode"/><module name="IllegalInstantiation"/><module name="InnerAssignment"/><module name="MagicNumber"><property name="ignoreNumbers" value="0, 1, 2"/><property name="ignoreAnnotation" value="true"/><property name="ignoreHashCodeMethod" value="true"/><property name="ignoreFieldDeclaration" value="true"/></module><module name="MissingSwitchDefault"/><module name="SimplifyBooleanExpression"/><module name="SimplifyBooleanReturn"/><module name="FinalClass"/><module name="InterfaceIsType"/><module name="VisibilityModifier"><property name="packageAllowed" value="true"/><property name="protectedAllowed" value="true"/></module><module name="StringLiteralEquality"/><module name="NestedForDepth"><property name="max" value="3"/></module><module name="NestedIfDepth"><property name="max" value="4"/></module><module name="UncommentedMain"><property name="excludedClasses" value=".*Application$"/></module><module name="Regexp"><property name="format" value="System\.out\.println"/><property name="illegalPattern" value="true"/></module><module name="ReturnCount"><property name="max" value="4"/></module><module name="NestedTryDepth "><property name="max" value="4"/></module><module name="SuperFinalize"/><module name="SuperClone"/></module></module>

3.使用方式

CheckStyle 有两种常用的使用方式,分别是通过代码编辑器 IDEA 和 Maven 配合使用

4.IDEA插件使用方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Maven插件使用CheckStyle

介绍

由于项目是Maven项目,希望在编译的时候自动执行检查,不需要额外手动执行,可以选择在pom.xml配置maven-checkstyle-plugin插件,绑定到Maven的生命周期,这样在执行mvn compile等命令时自动触发执行检查

单模块项目

在项目根目录新建一个 dev-support 文件夹,将代码规约配置文件放到此路径下,当然你也可以根据自己的需求去自行定义

在这里插入图片描述

单模块的Maven项目只需要配置plugins即可, pom.xml配置如下:

<plugins><plugin><artifactId>maven-checkstyle-plugin</artifactId><version>3.1.0</version><configuration><configLocation>${maven.multiModuleProjectDirectory}/dev-support/checkstyle.xml</configLocation><includeTestSourceDirectory>true</includeTestSourceDirectory><excludes>**/autogen/**/*</excludes></configuration><executions><execution><id>validate</id><goals><goal>check</goal></goals><phase>validate</phase></execution></executions></plugin>
</plugins>

多模块项目

多模块的maven项目,只需要在父模块的pom.xml里面配置插件即可

6.文件末以空行结尾问题解决

明明已经以空行结尾了还是CheckStyle会提示这个,所以建议忽略它,配置的xml文件修改如下:

    <module name="NewlineAtEndOfFile"><property name="severity" value="ignore"/></module>

7.Jenkins配置CheckStyle

暂时省略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

synchronized的介绍

1.synchronized的介绍和作用 synchronized是Java编程语言中的一个关键字&#xff0c;用于实现线程同步。在多线程编程中&#xff0c;多个线程可能同时访问共享资源&#xff0c;而这可能导致数据不一致或其他问题。为了避免这些问题&#xff0c;可以使用 synchronized 关键字来…

华尔街日报:中国加密货币交易“非法却盛行”,VPN翻墙、微信找币商、线下面交……

《华尔街日报》戏谑地称&#xff0c;中国的投资者曾经是加密货币交易的主导力量&#xff0c;人民币是用于交易比特币最受欢迎的法定货币。而现在&#xff0c;中国的币圈投资者正努力规避政府对加密货币交易的严格规定。 事实上&#xff0c;在过去几年里&#xff0c;中国大陆与加…

无需编程,简单易上手的家具小程序搭建方法分享

想要开设一家家具店的小程序吗&#xff1f;现在&#xff0c;我将为大家介绍如何使用乔拓云平台搭建一个家具小程序&#xff0c;帮助您方便快捷地开展线上家具销售业务。 第一步&#xff0c;登录乔拓云平台进入商城后台管理页面。 第二步&#xff0c;在乔拓云平台的后台管理页面…

自动化工具 基于 Antd+DRF 开发了一款适配 JMeter 的接口自动化测试报告

JMeter Report 基于 AntdDRF 开发的一款 JMeter 测试报告服务&#xff0c;用于在 JMeter 接口测试中使用。 &#x1f334; 背景 JMeter 是测试工作中常用的一款工具&#xff0c;除了压测还可以用来做接口自动化的测试。 从事测试多年&#xff0c;接口自动化也做过很多的尝试…

链表存数相加算法(leetcode第2题)

题目描述&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外&#xff0c;这…

WebSocket协议、与HTTP对比

WebSocket 也可前往本人的个人网站进行阅读 WebSocket 和 HTTP WebSocket和HTTP协议一样&#xff0c;都是基于TCP协议实现的应用层协议。 HTTP协议通常是单边通信&#xff0c;主要用于传输静态文档、请求-响应通信&#xff0c;适用于Web浏览器加载网页、API调用等。然而Web…

Message queue 消息队列--RabbitMQ 【基础入门】

一&#xff0c;Message queue介绍&#xff1a; 1.1使用消息队列的优点&#xff1a; 服务之间最常见的通信方式是直接调用彼此来通信,消息从一端发出后立即就可以达到另一端,称为即时消息通讯(同步通信) 消息从某一端发出后,首先进入一个容器进行临时存储,当达到某种条件后,再由…

Vray渲染效果图材质参数设置

渲染是创造出引人入胜视觉效果的关键步骤&#xff0c;在视觉艺术领域尤为重要。不过&#xff0c;渲染作为一个资源密集型的过程&#xff0c;每当面对它时&#xff0c;我们往往都会遭遇到时间消耗和资源利用的巨大挑战。幸运的是&#xff0c;有几种方法能够帮助我们优化渲染&…

室内机器人区域覆盖算法仿真测试平台设计与实现(预告)

前一篇&#xff1a; 户外机器人区域覆盖算法仿真测试平台设计与实现&#xff08;预告&#xff09; 基本完全是人工智能生成的内容。 之前此课题只是课程中的一个项目案例。 ROS1云课→32愉快大扫除 但是可以感觉到过于宽泛&#xff0c;没有任何具体实践&#xff0c;比如使用…

计算机硬件 5.2组装整机

第二节 组装整机 一、准备工作 1.常用工具&#xff1a;中号十字螺丝刀、尖嘴钳、软毛刷、防静电手环等。 2.组装原则&#xff1a; ①按“先小后大”“从里到外”的顺序进行&#xff0c;不遗漏每一环节&#xff0c;不“带病”进行下一环节。 ②合理使用工具器材&#xff0c;…

linux内核视角看阻塞式IO

一、概述 网络包从网卡送到协议栈后&#xff0c;内核还有一项重要的工作&#xff0c;就是要能通知用户进程&#xff0c;让用户进程能够收到并处理这些数据。用户进程和内核的交互一般有两种典型的方案&#xff0c;一种是同步阻塞&#xff0c;另一种是多路IO复用。 二、内核so…

AEB滤镜再破碎,安全焦虑「解不开」?

不久前&#xff0c;理想L7重大交通事故&#xff0c;再次引发了公众对AEB的热议。 根据理想汽车公布的事故视频显示&#xff0c;碰撞发生前3秒&#xff0c;车速在178km/h时驾驶员采取了制动措施&#xff0c;但车速大幅超出AEB&#xff08;自动紧急刹车系统&#xff09;的工作范…