Java代码质量评估工具

概述

Java代码的质量评估主要包括代码的可维护性、健壮性、以及在运行时能达到既定的性能目标,可维护性主要包括代码的可读性、在关键的代码上提供详细注释、在设计类、方法以及代码逻辑时符合设定的编码规范,健壮性主要包括编写代码时应使用常用的设计模式、在代码发生异常时能提供合理的容错性,代码运行的性能目标主要包括代码能高效地运行、代码在执行计算的过程中应合理地使用内存资源、处理器资源以及其他系统资源。

本文主要描述Eclipse IDE的集成开发工具提供的相关插件,这些插件主要包括阿里云的P3C、CheckStyle、PMD、FindBugs、SourceMonitor、Sonar,使用这些插件对项目工程代码执行静态扫描,从而输出代码存在的问题,研发人员可以根据这些问题初步评估代码的质量,然后,修改以及优化这些代码问题,这些插件的功能与作用如下所示:

阿里云的P3C

P3C是阿里云提供的编程规范的插件,支持Eclipse IDE或者其他IDE,其提供的编程规约包括命名规范、常量定义、代码格式、OOP规约、集合处理、并发处理、控制语句、注释规约以及其他规约

CheckStyle

Check Style是一款开发工具,开发者可以使用该工具检查代码是否符合既定的标准规范,其提供的检查范围包括类设计问题、方法设计问题、代码编写格式或者布局问题、其他问题,其支持Eclipse IDE或者Maven插件

 

PMD

PMD是一款静态代码分析工具,使用该工具检查代码可以帮助开发者发现的问题包括未被使用的变量、无用或者空的代码块、多余被创建的类对象、其他问题,其支持Eclipse IDE或者Maven插件

 

FindBugs

FindBugs是一款专用于Java语言的代码安全审计的工具,其提供的代码检查功能包括发现代码类型安全问题、发现传输协议数据安全问题,其支持OWASP标准以及CWE标准的安全性检查,其提供Eclipse IDE或者Maven插件

 

SourceMonitor

SourceMonitor是一款用于统计代码行数、检查代码圈复杂度的工具,代码圈复杂度能直接反映出代码算法的计算效率的问题,复杂度越高,则代码算法的执行效率越低

 

Sonar

Sonar提供三种方式的代码检查工具,包括Eclipse IDE插件本地代码检查、支撑企业内开发团队的代码检查平台、在DevOps  CI/CD领域中提供有效的工具集成到云环境

 

阿里云的P3C

https://github.com/alibaba/p3c/

图片

如上所示,git上下载P3C源代码到本地开发环境

https://p3c.alibaba.com/plugin/eclipse/update

图片

如上所示,在Eclipse IDE中,输入P3C的插件网络地址即可安装

图片

如上所示,Alibaba Code Guidelines代码检查插件安装成功

图片

如上所示,使用Alibaba Code Guidelines代码检查插件对Java项目工程代码执行扫描,输出代码存在的问题,开发人员可以根据这些问题及时修复以及优化代码

CheckStyle

https://checkstyle.org/index.html

https://maven.apache.org/plugins/maven-checkstyle-plugin/usage.html

    

图片

如上所示,在Eclipse IDE的Maven工程中配置Maven checkstyle插件

图片

如上所示,在Eclipse IDE执行Maven的命令生成代码检查报告

图片

图片

如上所示,在项目构建的目标目录site中,输出checkstyle的报告

图片

如上所示,checkstyle.html页面中可以查看代码存在的问题

PMD

https://docs.pmd-code.org/latest/pmd_userdocs_tools_maven.html

图片

图片

如上所示,在Eclipse IDE项目工程中配置Maven的pom.xml

图片

如上所示,在Eclipse IDE中运行Maven的命令执行PMD对代码的分析

图片

如上所示,在项目工程的构建目录中输出pmd.html的代码分析报告

FindBugs

https://find-sec-bugs.github.io/

图片

图片

如上所示,在Eclipse IDE项目工程中配置Maven的pom.xml

mvn compile

mvn spotbugs:spotbugs

mvn spotbugs:gui

图片

如上所示,在Eclipse IDE中运行Maven命令,执行findbugs的代码分析

图片

如上所示,findbugs提供的分析工具显示代码存在的问题

SourceMonitor

https://www.derpaul.net/SourceMonitor/

图片

如上所示,下载安装SourceMonitor工具、对Java代码工程执行圈复杂度的分析、输出分析报告

Sonar

https://docs.sonarsource.com/sonarlint/eclipse/

如上所示,在Eclipse IDE插件市场中搜索安装SonarLint

如上所示,在Eclipse IDE中使用SonarLint对Java项目工程执行代码分析

如上所示,SonarLint对Java项目工程执行代码分析,输出分析报告

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

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

相关文章

k8s(Kubernetes)集群部署--使用 kubeadm方式部署

k8s集群部署--使用 kubeadm方式部署 一、测试所需环境(三台均要执行)二、配置准备(三台均要执行)1. 重命名hostname、添加hosts2. 关闭防火墙、selinux与swap3. 添加网桥过滤及内核转发配置文件4.同步时间5.安装ipset及ipvsadm 三…

Mysql002:(库和表)操作SQL语句

目录: 》SQL通用规则说明 SQL分类: 》DDL(数据定义:用于操作数据库、表、字段) 》DML(数据编辑:用于对表中的数据进行增删改) 》DQL(数据查询:用于对表中的数…

【Verilog教程】2.3 Verilog 数据类型

Verilog 最常用的 2 种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。 线网(wire) wire 类型表示硬件单元之间的物理连线,由其连接的器件输…

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议,…

Visual Studio Code配置开发Maven项目、Spring Boot项目

配置开发Maven项目、Spring Boot项目 配置全局配置项目配置注意 Maven项目开发安装插件创建项目启动项目 Spring Boot项目开发安装插件创建项目启动项目 其他插件 配置 全局配置 ctrlshiftp打开搜索setting.json,这个setting.json配置属于全局配置 配置全局的Java与…

Python配置与测试利器:Hydra + pytest的完美结合

简介:Hydra 和 pytest 可以一起使用,基于 Hydra Pytest 的应用可以轻松地管理复杂配置,并编写参数化的单元测试,使得Python开发和测试将变得更为高效。 安装: pip install hydra-core pytest案例源码:my…

毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计

基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示: 要使用xpath定位这个div元素,并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …

(图论) 1020. 飞地的数量 ——【Leetcode每日一题】

❓ 1020. 飞地的数量 难度:中等 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个 海洋单元格、1 表示一个 陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边…

python基础语法(四)

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️🐿️🐿️C语言例题 🐣🐓🏀python 这…

9.19 QT作业

完成文本编辑器的保存工作 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QFontDialog> //字体对话框 #include<QFont> //字体类 #include<QMessageBox> //消息对话框 #inclu…

SpringMVC学习|JSON讲解、Controller返回JSON数据、Jackson、JSON乱码处理、FastJson

JSON讲解 JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式&#xff0c;目前使用特别 广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。 易于人阅读和编写&#xff0c;同时也易于机…

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项 岩土工程安全监测是保障工程稳定和安全的重要手段之一&#xff0c;而振弦采集仪则是岩土工程安全监测的常用设备之一&#xff0c;可以用于实时监测地下水位、土体变形、岩体应力等。其中&#xff0c;振弦传感器是振弦采…

解决报错:npm ERR! code 1

我是 npm install --legacy-peer-deps 成功了 解决方案&#xff1a; 升级swiper库&#xff1a;你可以尝试升级你的项目中的swiper库到5.2.0或更高版本&#xff0c;以满足vue-awesome-swiper的需求。你可以使用以下命令来进行升级&#xff1a; npm install swiperlatest 注意…

Hadoop:YARN、MapReduce、Hive操作

目录 分布式计算概述 YARN概述 YARN架构 核心架构 辅助架构 MapReduce 概述 配置相关文件 提交MapReduce到YARN Hive Hive架构 Hive在VMware部署 Hive的启动 数据库操作 数据表操作 内部表操作 外部表操作 数据加载和导出 数据加载LOAD 数据加载 - INSERT SEL…

Flink sql 1.17笔记

环境准备 # 启动hadoop集群 # 启动Flink yarn session (base) [link999hadoop102 flink-1.17.0]$ bin/yarn-session.sh -d# 启动finksql客户端 (base) [link999hadoop102 flink-1.17.0]$ bin/sql-client.sh -s yarn-session# 如果有初始化文件 bin/sql-client.sh embedded -s …

Spring Cloud Alibaba Ribbon负载均衡器

文章目录 Ribbon 负载均衡器环境搭建1.依赖2.配置3.修改其默认的负载均衡策略3.1 验证 4.创建自定义的Rule4.1 MyRule&#xff08;&#xff09;4.2 在配置config类中配置 5.饥饿加载6.我只想访问不想被别的访问 Ribbon 负载均衡器 背景 Ribbon 是一个用于客户端负载均衡的开源…

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式 封装组件自定义内容 <template><span v-if"[, null, undefined].indexOf(content) -1"><el-tooltip :content"content" effect"light" placement&q…

Pytorch从零开始实战04

Pytorch从零开始实战——猴痘病识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——猴痘病识别环境准备数据集模型选择模型训练数据可视化其他模型图片预测 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytor…

前端-layui动态渲染表格行列与复杂表头合并

说在前面&#xff1a; 最近一直在用layui处理表格 写的有些代码感觉还挺有用的&#xff0c;顺便记录下来方便以后查看使用&#xff1b; HTML处代码 拿到id 渲染位置表格 <div class"layui-table-body salaryTable"><table class"layui-table" i…