公司给了个CheckStyle,还给公司一片红润

news2024/10/6 6:05:05

        项目总监在管理项目时,会担心技术人员开发代码不规范的问题。如果人员少口头述说一下就好了。但是人员大呢?比如50人的大团队,如果一个一个去说那肯定不可能。所以就需要借助工具checkstyle了。checkstyle的介绍如下:

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

        CheckStyle作为检验代码规范的插件,除了可以使用配置默认给定的开发规范,如Sun的,Google的开发规范啊,也可以导入像阿里的开发规范的插件。事实上,每一个公司都存在不同的开发规范要求,所以大部分公司会给定自己的check规范,一般导入给定的checkstyle.xml文件即可实现。

现成CheckStyle插件使用

下载好检测器插件

可以下载阿里的开发规范,楼主一直用,感觉良好,安利一波~

启用插件

自定义CheckStyle规则

编写checkstyle.xml文件(里面配置相关的代码规则)

示例:

<?xml version="1.0"?>

<!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>
        <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>

        这个 name 属性是已经写好的 Checkstyle 或 FindBugs 等静态代码分析工具预定义模块的名称。

        在使用静态代码分析工具时,可以根据具体的需求选择预定义模块,也可以自定义一些规则进行检查。这些模块都有一个唯一的名称,例如 PackageNameJavadocTypeLocalVariableName 等。

        通过在配置文件中使用这些模块的名称,静态代码分析工具就可以知道需要执行哪些规则,以及需要对哪些部分进行检查。

开发者可以根据具体的需求进行配置,包括启用或禁用某些模块、修改默认规则等。这样可以保证代码的风格和质量符合团队或项目的要求。

编写checkstyle_suppression.xml文件(里面配置相关的代码规则)

   checkstyle_suppression.xml 是 Checkstyle 工具用于指定需要被忽略或禁用的代码规则的配置文件。

        有时候,在特定的情况下,我们可能希望忽略某些规则,或者禁用某些规则的检查。这可以通过在 checkstyle_suppression.xml 文件中进行配置来实现。

        在这个 XML 配置文件中,可以指定需要忽略的代码规则的名称、文件、类、方法等信息。这样,当 Checkstyle 运行时,它会读取这个配置文件,并根据配置来决定是否忽略或禁用某些规则的检查。

示例:

<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
        "-//Puppy Crawl//DTD Suppressions 1.1//EN"
        "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
</suppressions>

 在<suppressions></suppressions>标签中,可以根据需要添加或定义压制规则。一个压制规则通常包括要忽略的代码规则的名称、相关代码的位置、理由等信息。压制规则的具体格式和语法可以在DTD文件中找到。

启用本地自定义CheckStyle规则文件

开始C

选择你需要checkstyle的类右击:

点击checkstyle,因为我导入的是阿里巴巴,使用checkstyle的按键被占用了,懒得弄了,阿里蛮好的

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

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

相关文章

腾讯联手警方重拳出击 《绝地求生》外挂首案告破

12月13日&#xff0c;闲游盒腾讯公司联手无锡江阴警方破获一起利用《绝地求生》游戏外挂非法谋利的重大案件&#xff0c;3名核心涉案犯罪嫌疑人全部落网&#xff0c;并对犯罪事实供认不讳。这是腾讯宣布获得《绝地求生》国服独家代理权以来&#xff0c;破获的首起《绝地求生》外…

整数转罗马数字-----题解报告

题目&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 直接按照题目模拟过程即可 public String intToRoman(int num) {int []a{1000,900,500,400,100,90,50,40,10,9,5,4,1};String []b{"M","CM","D",&quo…

全志R528代码编译和烧录以及测试

代表编译 代码存在如下目录中:/home/workspace/tina-r528-v1.2 这里输入如下指令进行编译: su root source build/envsetup.sh lunch r528_evb2-tina make & packroottina-virtual-machine:/home/workspace/tina-r528-v1.2# source build/envsetup.sh Setup env done! …

最小生成树专题2 最小生成树-Kruskal算法

题目&#xff1a; 样例1&#xff1a; 输入 4 5 0 1 3 0 2 2 0 3 3 2 3 1 1 2 1 输出 4 样例2&#xff1a; 输入 3 1 0 1 1 输出 -1 思路&#xff1a; 由题意&#xff0c;我们看一下数据&#xff0c;可以知道&#xff0c;朴素版的 最小生成树&#xff0c;是使用 二维数组存储…

【python入门篇】条件表达式、循环(5)

这一章节讲python的条件表达式和循环放在一起来说&#xff0c;条件语句是通过判断条件是否成立&#xff0c;根据条件表达式的结果做出决策&#xff0c;控制不同代码块的执行。循环是一种重复执行某段代码的结构,通常被用于遍历或处理一组数据,或者重复执行一些代码直到满足某个…

设计模式:状态模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

上一篇《备忘录模式》 下一篇《访问者模式》 简介&#xff1a; 状态模式&#xff0c;它是一种对象行为型模式&#xff0c;它允许一个对象在其内部状态改变时改变它的行为。这种模式可以让一个对象的行为随着状态的改…

Docker安装及镜像源修改

Docker安装及镜像源修改 一、docker安装1、yum 包更新到最新2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的3、 设置yum源4、 安装docker&#xff0c;出现输入的界面都按 y5、 查看docker版本&#xff0c;…

2023年中国商用洗碗机产量、需求量、市场规模及行业前景分析[图]

商用洗碗机是餐厅、食堂、中央厨房、酒店等应用场景中不可或缺的洁净消毒设备。商用洗碗机一般用于商用目的&#xff0c;随着消费者对食品卫生日渐重视&#xff0c;中国商用洗碗机市场得到了快速发展。商用洗碗机分类洗碗机有多种形式按洗涤方式分&#xff0c;有喷淋式、叶轮式…

AI 数字人短视频变现及引流,轻松掌握流量密码

项目介绍 AI 数字人短视频就是利用 AI 数字人工具 &#xff0c;生成模仿真人的口播视频 &#xff0c;进行涨粉变现。常见的领域有情感 、 创业 、 育儿 、 书单等 &#xff0c;同一个视频可以发布到各大平台 &#xff0c;实现一 鱼多吃。 创业就卖思维类书籍 &#xff0c;育儿…

Android setText()错误

android.content.res.Resources$NotFoundException: String resource ID #0x0at android.content.res.Resources.getText(Resources.java:415)at android.widget.TextView.setText(TextView.java:6375) 出现场景&#xff1a;在RecycleView的 Override public void onBindViewHo…

MySQL数据库#6

Python操作mysql 在使用Python连接mysql之前我们需要先下载一个第三方的模块 pymysql的模块&#xff0c;导入后再进行操作。 操作步骤&#xff1a;1. 先连接mysql host&#xff0c;port&#xff0c;charset&#xff0c;username password 库&#xff0c;等等。 import pymysql…

RawNet 1-3 介绍

1. Overview RawNet: Advanced end-to-end deep neural network using raw waveforms for text-independent speaker verification &#xff08;RawNet 1&#xff09; 出自会议&#xff1a;INTERSPEECH 2019. &#xff08;论文链接&#xff1a;https://arxiv.org/pdf/1904.0…

超分辨率——SESR网络训练并推理测试(详细图文教程)

最近学了一个超轻量化的超分辨率网络SESR&#xff0c;效果还不错。 目录 一、 源码包二、 数据集的准备2.1 官网下载2.2 网盘下载 三、 训练环境配置四、训练4.1 修改配置参数4.2 导入数据集4.3 2倍超分网络训练4.3.1 训练SESR-M5网络4.3.2 训练SESR-M5网络4.3.3 训练SESR-M11…

使用pycharm远程调试

使用pycharm 专业版&#xff0c; 在设置解释器中&#xff0c;具备ssh 解释器功能&#xff1b; 一般在本地无法调试远程端代码&#xff0c;机械性的scp传输文件十分影响工作效率&#xff0c;PyCharm的Pro支持远程Run&#xff0c;Debug&#xff0c;等可视化的功能。 操作系统&…

超声波原理的便携式明渠流量计

便携式明渠流量计是一款便携式的可随带随走的一款仪器&#xff0c;主要是用来和在线明渠流量计做液位和流量比对的一款比对装置。 仪器可自动每两分钟记录一次液位数据&#xff0c;连续记录6次&#xff0c;同时可以累计测量10分钟的流量数据&#xff0c;将其结果与现场在线明渠…

Angular改变组件中样式(两种方法)

项目中遇到修改组件样式的情况&#xff0c;搜了半天资料基本只有vue和react的方法&#xff0c;什么/deep/,v-deep统统不起效&#xff0c;崩溃&#xff01; 所以这里总结一下Angular的方法。 angular中想引入组件并修改组件内样式&#xff0c;有两种方法。 文章目录 方法1&…

壹牛NFT数字艺术藏品数藏开源无加密

这个版本新增了不少功能&#xff0c;也修复了一些地方。 1.平台新增用户找回密码功能 2.平台新增短信注册&#xff08;实名制功能&#xff09; 3.平台新增主图后台添加功能 4.平台修复相关问题&#xff0c;系统高效运行 1、H5端与APP端在新UI完美适配 2、加入宝盒功能&am…

FL Studio21.2最新订阅版本更新升级(详细功能介绍)

好消息&#xff01;FL Studio 21.2 在 10 月 26 日正式发布啦&#xff0c;它新增了 FL Cloud 在线采样库和 AI 音乐制作功能&#xff0c;还提供音乐分发到 Spotify、Apple Music 等主要音乐平台的服务。此外&#xff0c;还有新的音频分离功能、自定义波形颜色和新的合成器 Kepl…

下一代金融将呈现 7 项激动人心的金融科技创新

金融科技处于现代技术发展的前沿。随着金融科技领域价值超过 1790 亿美元&#xff0c;初创企业和创新者都在寻找金融和银行业的下一个重大事件。 本文讨论了 2024 年的 7 项金融科技创新。 其中一些创新建立在我们在金融行业看到的现有趋势的基础上&#xff0c;而另一些则是完…

学习ftp

文章目录 一、FTP介绍二、两种模式&#xff08;主动模式和被动模式&#xff09;三、FTP配置文件详解四、实际场景举例五、黑白名单六、网络限制 一、FTP介绍 1.FTP&#xff08;File Transfer Protocol&#xff09;是一种应用广泛且古老的互联网文件传输协议。 2.主要应用于互联…