IntelliJ IDEA插件FindBugs-IDEA和QAPlug和Alibaba Java Coding Guidelines的使用

本文主要是介绍IntelliJ IDEA插件FindBugs-IDEA和QAPlug和Alibaba Java Coding Guidelines的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FindBugs-IDEA和QAPlug和Alibaba Java Coding Guidelines插件,都是用来帮助开发者规范代码,培养优良的编码习惯。

1、FindBugs-IDEA

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

1.1、插件安装方式

①、IDEA无法搜索到FindBugs-IDEA,通过离线方式下载
下载地址: FindBugs-IDEA代码规范插件下载.
在这里插入图片描述
②、导入下载的FindBugs-IDEA-1.0.1.zip包
在这里插入图片描述
③、重启IDEA
在这里插入图片描述

1.2、插件使用

①、运行插件
Analyze Selected File(s)————单个文件
Analyze Package(s) Files)————包下文件
Analyze Module Files)————整个module
Analyze Project Files)————整个工程
在这里插入图片描述

②、左下方红框代表安装完成,左侧中间红框代表运行,右测上方显示项目代码分析详情。
在这里插入图片描述
③、项目代码分析详情

分析详情分析详情
Bad pratice编程的坏习惯,主要是命名问题,比如类名最好以大写开头,字符串不要使用等号不等号进行比较,可能会有异常最好用try-catch包裹的代码,方法有返回值但被忽略等等,这些如果不想改可以直接忽略。
Malicious code vulnerability恶意代码漏洞,主要是一些属性直接使用public让别的类来获取,建议改为private并为其提供get/set方法。还有一些public的静态字段,可能会被别的包获取之类的。这些也需要根据项目具体情况来,个人意见,在有的不重要类,有时直接公开使用属性,可能更为便捷。如果你认为这些不需要修改,完全可以忽略。
Dodgy code糟糕的代码,比如一个double/float被强制转换成int/long可能会导致精度损失,一些接近零的浮点数会被直接截断,事实上我们应该保留。在类型转换的时候,我们应该为类型转换提供一个安全的转换方法。比如使用switch的时候没有提供default。多余的空检查,就是不可能为空的值,增加了不为空判断,这是没有必要的。属于代码冗余不安全的类型转换等等。
performance性能,主要是一些无用的代码,比如声明了没有用到的属性等等。
correctness代码的正确性,主要是没有对变量进行不为空判定,在特殊情况可能发生空指针异常。

2.4、检测之后的提示实例

①、除非两个字符串都是源文件中的常量,或者已经使用String.intern()方法进行了插入,否则相同的字符串值可能由两个不同的字符串对象表示。请考虑使用等量(object)方法。
在这里插入图片描述

2、QAPlug

在IDEA中搜索会发现有四种QAPlug,包含了PMD、FindBugs、CheckStyle和QAPlug。QAPlug 是一个 Intellij IDEA 插件,用于管理代码质量,它集成了 PMD、Checkstyle 和 Findbugs 等工具。

PMD
与findbug类似找bug用,还有规范,比如说注释不全
FindBugs
只寻找可能存在bug的地方,不注重样式或者格式,它试图只寻找真正的缺陷或者潜在的性能问题
CheckStyle
代码样式风格检查,专门check代码规范风格的,比如缩进,换行操作,命名大项目往往是有很多人一起完成的,然而每个人都有自己的style,导致整个项目的代码不仅存在不符合语言规范的情况,而且读起来非常困难。因此,这样的项目中都会引入Checkstyle,来规范大家的编码风格,尽量做到统一和合理。所以使用checkStyle检查到问题
QAPlug
这个插件集成了 PMD、Checkstyle 和 Findbugs 工具,1键运行3个同时汇总整合,非常方便,所以其他的不用装了,就用这个就行了!与sonar平台的功能类似!如果公司没有搭建sonarqube平台的话,本地使用这个最佳!

2.1、插件安装方式

①、在线方式,如图操作,直接去idea插件里面搜索即可
注意:只安装QAPlug,会提示错误消息,请至少安装一个QAPlug子模块,这边安装FindBugs子模块进行使用。
在这里插入图片描述

2.2、插件使用

①、选择项目,点击Analyze,在点击Analyze Code
在这里插入图片描述
②、勾选如下两个红框
在这里插入图片描述
③、代码分析结果
Efficiency————效能
Maintainability————可维护性
Reliability————可靠性
Usability————可用性
在这里插入图片描述

2.3、检测之后的提示实例

①、左侧显示结果以及对应类的所在位置,右侧显示纤细的问题描述
在这里插入图片描述

3、Alibaba Java Coding Guidelines

来自阿里的阿里巴巴开发公约。他会根据你的代码情况给出Blocker(极严重)、Critical(严重)、Major (警告)等,等级的提示,让程序员快速定位问题代码进行修改。

3.1、插件安装方式

①、在线方式,如图操作,直接去idea插件里面搜索即可在这里插入图片描述
②、离线方式,因为有时候会安装失败,去官网下载对应插件离线包;
下载地址: alibaba代码规范插件下载.
在这里插入图片描述

3.2、插件使用

①、手动扫描(即绿色图标编码规范约束)
可进行单个类、或者整体项目的的扫描。
②、自动扫描(即蓝色图标实时检测功能)
可开启实时检测功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/c949bde79dd24c338f5d184aa16cd407.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAemp6LW91bmk=,size_19,color_FFFFFF,t_70,g_se,x_16

3.3、提示文档

①、查阅所有提示
在Settings中打开Editor选中Inspections搜索Ali-Check,会显示出所有的提示,包含了Blocker(极严重)、Critical(严重)、Major (警告)等。
在这里插入图片描述
②、可对提示取消勾选
有的提示并不是很必要的,不看这些提示,是可以自定义的。如下图,我已标注,写了 create by 等,但是插件还是提示缺少作者。
在这里插入图片描述
取消勾选后就不会有提示
在这里插入图片描述
③、可对提示等级进行修改
调整对应注释的等级,根据自身的需求。
在这里插入图片描述
④、可对范围进行调控
调整规范的检索范围,默认In All Scope全局。
在这里插入图片描述

3.4、检测之后的提示实例

①、例如Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
在这里插入图片描述
②、不允许任何魔法值(即未经定义的常量)直接出现在代码中。
在这里插入图片描述
③、集合初始化时,指定集合初始值大小。
在这里插入图片描述

这篇关于IntelliJ IDEA插件FindBugs-IDEA和QAPlug和Alibaba Java Coding Guidelines的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838703

相关文章

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布