技术标签: idea findbugs checkstyle pmd findbugs java pmd checkstyle
checkstye、pmd、findbugs的对比
在IDEA setting-plugins 下分别搜索 checkstyle、pmd、findbugs 安装,安装后要重启IDEA。
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
规则版本号:V1.0(2018-05-11)
本规则重在编程规范,请与PMD、FindBugs结合使用
-->
<module name="Checker">
<!-- 每个java文件一个语法树 -->
<module name="TreeWalker">
<!--
Javadoc Comments2
-->
<!--<module name="JavadocType"/>
<module name="JavadocMethod">
<property name="scope" value="protected"/>
<property name="allowMissingPropertyJavadoc " value="true"/>
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="true"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="public"/>
</module>
<module name="JavadocStyle">
<property name="checkFirstSentence" value="false"/>
<property name="checkEmptyJavadoc" value="true"/>
<property name="checkHtml" value="false"/>
</module>-->
<!--
Naming Conventions
-->
<module name="ConstantName">
<property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)|(^logger$)"/>
</module>
<module name="LocalFinalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-zA-Z_][a-zA-Z0-9_]*)*$"/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
</module>
<!-- import -->
<!-- 避免使用* -->
<module name="AvoidStarImport"/>
<!-- 检查是否导入了多余的包 -->
<module name="RedundantImport"/>
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 没用的import检查 -->
<module name="UnusedImports"/>
<!--
Size Violations
-->
<!--<module name="LineLength">
<property name="max" value="120"/>
</module>-->
<module name="AnonInnerLength">
<property name="max" value="60"/>
</module>
<!--
Whitespace
-->
<module name="MethodParamPad"/>
<module name="NoWhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<!--<module name="TabCharacter"/>-->
<module name="WhitespaceAround">
<property name="tokens" value="COLON,NOT_EQUAL,QUESTION,DIV,DIV_ASSIGN,BXOR,BXOR_ASSIGN,MINUS,LCURLY,RCURLY,STAR,STAR_ASSIGN,TYPE_EXTENSION_AND,BAND,LAND,BAND_ASSIGN,MOD,MOD_ASSIGN,PLUS,PLUS_ASSIGN,LT,SL,SL_ASSIGN,LE,ASSIGN,MINUS_ASSIGN,EQUAL,GT,GE,SR,SR_ASSIGN,BSR,BSR_ASSIGN,BOR,BOR_ASSIGN,LOR,LITERAL_ASSERT,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,SLIST,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE"/>
</module>
<!--
Modifiers
-->
<module name="ModifierOrder"/>
<!-- Block Checks -->
<module name="EmptyBlock"/>
<module name="LeftCurly">
<property name="option" value="eol"/>
</module>
<module name="NeedBraces"/>
<module name="RightCurly">
<property name="option" value="alone"/>
</module>
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<!-- Coding -->
<!-- 检查局部变量或参数是否隐藏了类中的变量 -->
<module name="HiddenField">
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
<property name="ignoreAbstractMethods" value="true"/>
</module>
<!-- 检查是否有"魔鬼"数字 -->
<module name="MagicNumber">
<property name="tokens" value="NUM_DOUBLE, NUM_FLOAT, NUM_LONG"/>
<property name="ignoreNumbers" value="-1, 0, 1"/>
</module>
<!-- <module name="RedundantThrows">
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="true"/>
</module>-->
<module name="NestedTryDepth">
<property name="max" value="2"/>
</module>
<module name="IllegalThrows"/>
<module name="DeclarationOrder"/>
<module name="UnnecessaryParentheses"/>
<!-- Class Design -->
<module name="VisibilityModifier">
<property name="packageAllowed" value="true"/>
<property name="protectedAllowed" value="true"/>
</module>
<!--<module name="HideUtilityClassConstructor"/> -->
<module name="ThrowsCount">
<property name="max" value="3"/>
</module>
<!-- Metrics -->
<module name="BooleanExpressionComplexity">
<property name="max" value="5"/>
</module>
<!-- Miscellaneous -->
<!--<module name="Indentation"/>-->
<module name="UncommentedMain"/>
</module>
</module>
在checkstyle面板,点击检查按钮进行检查,也可以检查单个文件。
pmd的使用
findbugs的使用
计算机图形学的数学工具与C#实现.pdf国外科技新书评介 2010年第2期 (总第274期) 计算机科学YoshifumiM asunagaAoyamaGakuin 务的系统结构中是必不可少的,为了进行University,Japanetaleds. 性能分析,要求用工作流方式来表示,该Advancesin Scalabl...
ORACLE10g版本推出时,为了简化RAC中存储端的配置,ORACLE新推出了ASM(Automatic Storage Management --自动存储管理)特性,该特性拥有易管理,高自动性,并且,拥有号称超越裸设备IO性...
YAMLYAML是JSON的超集,简介而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。在创建一个Spring Boot项目时,引入的spring-boot-starter-web依赖间接地引入了snakeyaml依赖,snakeyaml会实现对YAML配置的解析。YAML的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。在Spring Bo...
目录模型结构Prior box默认框的产生Prior box 的大小尺寸计算输出层通道num_output计算。Priorbox的使用Permute,Flatten And Concat Layersmatching strategy:选择一系列default boxeshard negative miningdata augmentation技巧对比效果结...
前言受到疫情影响我从过完年一直呆在家里,索性学点知识方便以后跳槽涨薪,于是从二月份开始学习阿里P8架构师纯手打的一份Java面经手册,没想到5月初我成功从我们三线的一个小公司跳槽进了腾讯,虽然等级不高,但是涨薪还是涨了8K,而且去一个大公司多学点东西,对自己的成长还是有好处的。虽然说是面经手册,但是里面的涵盖的知识点还是很全面、很细的,一共分了一下十几个大部分:java基础、集合类Set、锁volatile synchronized Lock ReentrantLock AQS C、java多线程:、J
MATLAB:在奈奎斯特图上显示幅值裕度和相角裕度
说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子:#include struct student{int a;int b ;int c ;};struct student array1[1000] ;int main(void){int i ;for(i = 0 ; i < 1000 ; i++){array[i].a = 1 ;array[i].b = ...
IPV4地址划分有三种:⑴ 由网络位+主机位组成。分为:A、B、C、D、E类,其中A、B、C是常用的,这个在很多书上都可以看到。①A类地址:网络号占8位(第一位为0),主机号占24位。网络号的范围:1~126(0000 0001~0111 1111)(注:为什么不到127? 因为127为网络保留,有其他作用;为什么没有0?网络号全为0为保留地址)最大可用网络数:126=2^
最近做项目需要将通过API的到的数据存到本地,并且确保本地数据库中某张表的数据与数据源的数据保持一定的同步性,以下为解决问题的思路:1.在本地做好映射确保可以从外部访问,让api的提供方在数据库提供一个触发器,当数据提供方的数据发生变化时,主动同步到本地。(对方拒绝,扑街)2.用Mysql的repalce into 语句进行结合定时器来对数据的定时更新。3.网上还有一种思路是,从本地数据库调用此表中不变的字段...
1.先在终端输入sudo raspi-config2.找到Interfacing 进入3.开启vnc 重启树莓派4.打开windows下的 vnc viewer5.右上角点击File 创建新连接6.输入账号密码进行连接
互联网业务用户层技术主要包括:用户管理、消息推送、存储云、图片云。用户管理互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。稍微大一点的互联网业务,肯定会涉及到多个子系统,这些子系统不可能每个都自己来管理这么庞大的用户,由此引申出用户管理的第一个目标:SSO,单点登录,又叫统一登录。单点登录的技术实现手段较多,例如cookie、token等,
在此声明——本文摘自这里:【码神岛】STM32F0x HAL库学习笔记(5)片内FLASH的读写操作本文开发环境MCU型号:STM32F103C8T6IDE环境: MDK 5.25代码生成工具:STM32CubeMx 5.0.1HAL库版本:v1.9.0本文内容MCU片内Flash(闪存)的擦除与读写一个Flash读写例子/*main.c中的代码*/void FLASH_EEPROM_Write(uint32_t n);uint32_t FLASH_EEPROM_Read(