在Gradle工程中使用checkstyle来规范你的项目

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄
🌹简历模板、学习资料、面试题库、技术互助

🌹文末获取联系方式 📝
在这里插入图片描述

系列专栏目录

[Java项目实战] 介绍Java组件安装、使用;手写框架等
[Aws服务器实战] Aws Linux服务器上操作nginx、git、JDK、Vue等
[Java微服务实战] Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc等实战操作
[Java基础篇] Java基础闲聊,已出HashMap、String、StringBuffer等源码分析,JVM分析,持续更新中
[Springboot篇] 从创建Springboot项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回、全局异常处理、Swagger文档
[Spring MVC篇] 从创建Spring MVC项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回
[华为云服务器实战] 华为云Linux服务器上操作nginx、git、JDK、Vue等,以及使用宝塔运维操作添加Html网页、部署Springboot项目/Vue项目等
[Java爬虫] 通过Java+Selenium+GoogleWebDriver 模拟真人网页操作爬取花瓣网图片、bing搜索图片等
[Vue实战] 讲解Vue3的安装、环境配置,基本语法、循环语句、生命周期、路由设置、组件、axios交互、Element-ui的使用等
[Spring] 讲解Spring(Bean)概念、IOC、AOP、集成jdbcTemplate/redis/事务等


前言

在现代公司的运营中,后端研发部是必不可少的,其中Java又占据了大头。其中最火热的话题之一,就是代码风格,一个十人的团队,每个人都有自己的代码习惯,最后项目review时可以看出十种风格。
但随着时间发展,Google、Oracle、Spring、Netty 等机构和优秀框架,给我们带来了一些行业规范。当然,不存在绝对的正确和错误,关键在于规范的定义。
今天就给大家介绍下google style guide,Checkstyle就是以这种风格开发出的一个自动化插件,来辅助判断代码格式是否满足规范。

1、在Gralde中使用

在gralde中用法比较简单。示例项目: https://github.com/Ryan-Miao/springboot-security-demo/blob/master/config/checkstyle/checkstyle.xml

1.1、新建一个checkstyle.gradle

/*** The Checkstyle Plugin** Gradle plugin that performs quality checks on your project's Java source files using Checkstyle* and generates reports from these checks.** Tasks:* Run Checkstyle against {rootDir}/src/main/java: ./gradlew checkstyleMain* Run Checkstyle against {rootDir}/src/test/java: ./gradlew checkstyleTest** Reports:* Checkstyle reports can be found in {project.buildDir}/build/reports/checkstyle** Configuration:* Checkstyle is very configurable. The configuration file is located at {rootDir}/config/checkstyle/checkstyle.xml** Additional Documentation:* https://docs.gradle.org/current/userguide/checkstyle_plugin.html*/apply plugin: 'checkstyle'checkstyle {// The version of the code quality tool to be used.// The most recent version of Checkstyle can be found at https://github.com/checkstyle/checkstyle/releasestoolVersion = "8.8"// The source sets to be analyzed as part of the check and build tasks.// Use 'sourceSets = []' to remove Checkstyle from the check and build tasks.
//    sourceSets = [project.sourceSets.main, project.sourceSets.test]// Whether or not to allow the build to continue if there are warnings.ignoreFailures = false// Whether or not rule violations are to be displayed on the console.showViolations = true
}

1.2、在build.gradle中引入checkstyle

apply plugin: 'checkstyle'

1.3、加载checkstyle配置文件

关键的地方是指定checkstyle.xml规则配置文件了。默认会读取根目录下

config/checkstyle/checkstyle.xml

文件的内容来自:https://sourceforge.net/projects/checkstyle/files/checkstyle/
去maven中找到对应版本的checkstyle, 然后下载jar,解压,里面有google-checks.xml, 复制里面的内容即可。

还可以直接用最新版本,参见Github。
在这里插入图片描述

1.4、运行任务

./gradlew check

1.5、可以在以下目录找到检查结果

build/reports/checkstyle/main.html

更多细节,参考gradle 官网.

1.6、 根据流水线的Check提示,修改代码格式

在遇到Error级别代码检查异常时,会中断流水线,这时我们可以找到指定的Error信息,去修改工程里对应的代码。
在这里插入图片描述


总结

一个团队还是统一代码风格好,不仅仅是代码可观赏性,对代码的可维护性影响也非常大。后续的代码中,都会按照这套规范执行下去,如果有新人进来,可以学习一下,在有文档的情况下,学习成本也是可控的。


联系方式

微信公众号:Java微服务架构

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

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

相关文章

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element:transitionrun 事件Element:transitionstart 事件Element:transitionend 事件Element:transit…

音频DAC,ADC,CODEC高性能立体声

想要让模拟信号和数字信号顺利“交往”,就需要一座像“鹊桥”一样的中介,将两种不同的语言转变成统一的语言,消除无语言障碍。这座鹊桥就是转换器芯片,也就是ADC芯片。ADC芯片的全称是Analog-to-Digital Converter, 即模拟数字转换…

【白盒测试】逻辑覆盖和路径测试的设计方法

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…

Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

IO模型 IO模型就是说用什么样的通道进行数据的发送和接收,Java 共支持3种网络编程IO 模式:BIO,NIO,AIO BIO(Blocking lO) 同步阻塞模型, 一个客户端连接对应一个处理线程 代码示例: package com.tuling.bio; import java.io.…

DeepL翻译器,一直想使用怎么办?

作为一个独立开发者,将应用程序翻译到不同语言是个让我很头大的事情。请专业人员翻译太贵无法承受,谷歌翻译质量太差时常词不达意。 如何使用 DeepL 使用起来很直观,打开此网页粘贴要翻译的内容即可。它也支持 macOS 和 PC 端。 这里开我们开…

LinuxShell

一、 新建用户 在Linux上新建一个用户并赋予超级用户权限,建立家目录并设置默认shell为bash,并设置Linux在输入sudo密码时显示星号。请提交全部命令及输出截图(表明完成需求即可)。 1.sudo useradd -m ymhs(用户名) 增加用户 2.su…

SpingBoot的项目实战--模拟电商【5.沙箱支付】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. 沙箱支付是什么 二.Sp…

2分钟了解什么是socket?

文章目录 概念比喻类型Socket 与 TCP、UDP的关系 概念 Socket 是提供网络通信功能的编程接口(API),提供了网络通信的基本操作,允许程序或进程之间进行数据交换。是传输层协议的具体软件实现,它封装了协议底层的复杂实…

【干货】Windows中定时删除system32目录下的.dmp文件教程

旭帆科技的技术人员除了给用户答疑解惑以外,还会主动测试软件性能,进行平台优化,除此之外,技术人员还会总结一些技术干货,这不,近期又提供了一份如何在Windows中定时删除system32目录下的.dmp文件的教程。感…

CRM软件对企业发展起着哪些作用?CRM的功能解析

虽然不少科技成果昙花一现,但CRM管理系统作为销售和营销领域的核心技术,已经牢牢占据了不可撼动的地位。拥有一个部署得当的CRM系统能为企业带来诸多好处。它可以跟踪和管理销售人员与潜在/现有客户的所有互动和沟通,并帮助他们识别出需要重点…

msvcp140.dll文件缺失要怎么修复?msvcp140.dll重新安装的解决方法

使用Windows系统时,dll文件丢失的问题时有发生,特别是msvcp140.dll文件缺失问题,它会导致某些程序无法运行。针对这一常见问题,本文将详细阐述如何应对和修复msvcp140.dll文件缺失的状况,提供多个解决方案,…

Java多线程-14

目录 程序线程进程 并发并行​编辑 创建线程的基本方式 程序线程进程 并发并行 创建线程的基本方式(1) package com.edu.threaduse;public class Demo01 {public static void main(String[] args) throws InterruptedException {//创建Cat对象&…

DolphinScheduler实际应用

前言 最近公司新启动了一个项目,然后领导想用一下新技术,并且为公司提供多个大数据调度解决方案,我呢就根据领导要求调研了下当前的开源调度工具,最终决定采用DolphinScheduler, 因此研究了一下DolphinScheduler &…

今日聊聊寒假假期如何不颓废

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Linux-进程间通信_管道

项目场景: 须熟知文件管理和进程方面的基础知识 通过Xshell和VScode 相互进行远程开发,学习进程间通信的其中一种方式——管道。 问题描述 依照我们曾经所学的知识,我们仅仅只能在单个进程中进行数据的交互,但是在实际应用中&a…

算法第七天-粉刷房子Ⅲ

粉刷房子Ⅲ 题目要求 解题思路 来自[宫水三叶] 动态规划 定义 f[i][j][k] 为开了前i间房子,且第 i 间房子的颜色编号为 j, 前 i 间房子形成的分区数量为 k 的所有方案中的[最小上色成本]。 我们不失一般性的考虑 f[i][j][k] 该如何转移,由…

Sentinel使用

前言: 所有的准备工作都做好了,就可以进入到Sentinel的具体使用上了,这里还需要一个测试工具叫做jmeter,是一个很好的测试工具,专门针对并发的,准备好以后,就可以直接开干了。 一、Sentinel作用…

闲人闲谈PS之五十一——项目物料移动中的2个WBS

惯例闲话:2024年在不知不自觉中已经到来,之前闲人也聊起过2023年是忙碌和收获的一年。今年的任务初步排一下,也基本上排到年底去了,又会是忙碌的一年。虽然忙碌,但是今年对于自己而言,有更加重要的事情要去…

vue3顶部内容固定定位,下面内容可以向上滚动

功能要求:一个div里有两个模块儿,顶部按钮模块儿和下面的内容区域模块儿,顶部按钮模块儿固定在顶部不随滚动条滚动,下面内容区域可以滚动 如图: 思路是: 1、顶部按钮固定定位,会脱离文档流&…