基于IDEA快速重构代码的几种方式

news2024/12/28 19:23:10

文章目录

      • 1. 方法重构
        • 1.1 操作方式
        • 1.2 优化方式
      • 2. 类重构
        • 2.1 操作方式
        • 2.2 优化方式
      • 3. 基于代码分析重构
        • 3.1 操作方式
      • 4 基于重复代码重构
      • 4.1 操作方式

本篇主要基于AI工具 TONGYI Lingma, 静态代码分析工具 Qodana 进行讨论

1. 方法重构

当你对某个封装的方法不满意时, 借助AI工具TONGYI Lingma 的Generate Optimization进行重构,适用于一些静态方式/ 内部逻辑的复杂的代码等

1.1 操作方式

选中代码–>右键–> TONGYI Lingma–>Generate Optimization
或者 选中代码+快捷键
在这里插入图片描述

1.2 优化方式
  • 分析代码
  • 报告潜在问题及风险
  • 修改后代码
  • 及优化内容解释
    在这里插入图片描述

2. 类重构

当你对某个包装类不满意时, 借助AI工具TONGYI Lingma 的Generate Optimization进行重构,分析了上下文类的属性、方法和整体逻辑可能存在的风险,适用于一些类进行安全、性能、可维护提升时的优化

2.1 操作方式

选中代码–>右键–> TONGYI Lingma–>Generate Optimization
或者 选中代码+快捷键

2.2 优化方式
  • 安全性和异常处理
  • 性能和可维护性
  • 并发安全
  • 代码风格
  • 注释和文档
  • 依赖注入
  • 代码整洁性
    在这里插入图片描述

3. 基于代码分析重构

虽然TONGYI Lingma能完成原则类分析,但是在项目整体分析上,暂时还没有相关功能。在2023+ 的IDEA中可以使用Qodana进行代码分析。
Qodana与Alibaba Java Coding Guidelines(阿里代码检查) 类型,使用Qodana扫描后,根据结果自行判断是否修改,包含以下级别:
• PrimaryData(qodanaSeverity=Critical) 严重
• PrimaryData(qodanaSeverity=High) 高级
• PrimaryData(qodanaSeverity=Moderate) 中等
如图所示,分别从克隆、代码、控制流、错误拦截等等给出优化建议
在这里插入图片描述

3.1 操作方式

Tools–>Qodana–>Try Code Analysis with Qodana
在这里插入图片描述
选择云模式 和本地模式
在这里插入图片描述
对于分析结果中,觉得优先级低的错误警告,可以配置忽略目录分析和忽略错误分析的两种方式

在这里插入图片描述
右键–>Excluede from Qodana Analysis
在这里插入图片描述
当你执行exclude之后,会在qodana.yml 自动看到排除的配置
在这里插入图片描述

4 基于重复代码重构

重复代码审查的意义,如果有相似和相同的代码文件时,当一处存在bug需要修改多处, 对于相似文件来说,可能合并意义很大, 但是话说回来相似代码片段的话,业务代码可能存在大部分的相似之处,如何在扫描时,配置合理的重复行数,也挺难决策的,即使配合IDEA的Extract Method(快速提取方法)虽然可以很快重构,但是想事半功倍也挺难的。

4.1 操作方式

code–> Analyze Code -->Locate Duplicates
在这里插入图片描述

分析结果如图所示, 直接根据相似的文件去优化代码即可
在这里插入图片描述

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

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

相关文章

在js渲染的dom中的事件中传递对象

在某些情况下&#xff0c;可能需要将整个对象或部分对象嵌入到 HTML 元素的属性中&#xff0c;可以将对象数据序列化为 JSON 字符串&#xff0c;存储在 data-* 自定义属性中。这样可以在事件中取出并解析对象数据&#xff1a; <!DOCTYPE html> <html lang"en&qu…

Ubuntu Python与GitHub API 交互,获取仓库更新信息

1. 获取 GitHub 个人访问令牌 登录 GitHub &#xff0c;首先使用帐户登录 GitHub 在 GitHub 页面右上角点击头像&#xff0c;然后选择 “Settings” 在左侧菜单栏滚动到最下方&#xff0c;找到并点击 “Developer settings” 在 “Developer settings” 页面中&#xff0c…

【笔记】数据结构08

文章目录 最小堆的构建 另一个树的子树找树左下角的值 折半查找的平均查找长度[顺序表] 画出折半查找树将关键字按完全二叉树形式画出查找树 l o g 2 n 1 log_2n1 log2​n112个结点画出高度为4的查找树 1层1个节点比较1次&#xff0c;2层2个节点比较2次&#xff0c;3层4个节点…

2024年高教杯国赛(A题)碰撞检测模型+最优螺距|数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

计算机,数学,AI在社会模拟中的应用

国家智囊团会使用社会模拟器来预测社会动向和一些问题的涌现&#xff0c;亚洲社会仿真学会&#xff08;ASSA&#xff09;最近在武汉成立&#xff0c;旨在推动大型社会模拟器的研发和应用。 未来随着计算机算力的提升以及人工智能的进化&#xff0c;我们每个人都可能在计算机中被…

如何通过学习英语,打出人生的‘王炸’?

如何通过学习英语&#xff0c;打出人生的‘王炸’&#xff1f; 每个人都渴望一张“王炸”牌&#xff0c;能瞬间改变人生的走向。有的人通过天赋&#xff0c;有的人依靠机遇&#xff0c;而今天我们要探讨的&#xff0c;是通过学习英语打出人生“王炸”的真实故事。英语&#xf…

DB2创建数据库-创建用户-赋值权限-导入数据

这篇文章主要内容以下几点&#xff1a; 1&#xff09;创建数据库 2&#xff09;创建用户 3&#xff09;给用户赋权限 4&#xff09;导入准备好的建表语句和数据 一、创建数据库 安装DB2数据库软件&#xff0c;在我另一篇文章写有&#xff0c;自己查看。这里不讲解安装。假设你…

react 使用Ant Design中DatePicker设置mode=“year“无法获取value

一、问题描述 <DatePicker placeholder"请选择年份" mode"year" onChange{this.onChange}/>// 使用上边代码&#xff0c;界面呈现出只有年份的选择器。但是&#xff0c; onChange 事件根本不会触发&#xff0c;获取不了值&#xff01;二、解决办…

【系统架构设计师-2011年】综合知识-答案及详解

更多内容请见&#xff1a; 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2~4题】【第5~7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18~19题】【第20~21题】【第22题】【第23题】【第24题】【第2…

【PyQt6 应用程序】解说+原声视频混剪无显卡精简版,无显卡可用

在当今视频内容创作日益繁荣的时代,利用自动化工具进行视频编辑和二次创作已成为提高生产效率和创作水平的重要手段。本文将介绍如何使用PyQt6创建一个应用程序,该程序能够自动提取视频中的解说和原声部分,并使用人工智能对解说进行二次创作,从而生成具有独特风格的新视频内…

[网络原理]关于网络的基本概念 及 协议

文章目录 一. 关于网络的概念介绍1. 局域⽹LAN2. ⼴域⽹WAN3. 主机4. 路由器5. 交换机IP地址端口号 二. 协议协议分层TCP/IP五层模型(或四层)OSI七层模型封装分用 一. 关于网络的概念介绍 1. 局域⽹LAN 局域⽹&#xff0c;即 Local Area Network&#xff0c;简称LAN。 Local …

会声会影2024是一款功能强大的专业视频制作软件及会声会影字体怎么安装

字幕在视频中扮演着多重角色&#xff0c;对于不同类型的观众都有重要意义。通过提供文字信息&#xff0c;字幕帮助观众更好地理解视频内容&#xff0c;特别是对于那些听力受损或不懂视频语言的观众来说&#xff0c;字幕是他们获取信息的重要途径。这篇文章就一起来看看会声会影…

面试高频:Mysql事务

在MySQL中&#xff0c;事务是用于管理数据库操作的一组语句&#xff0c;它们作为一个整体执行&#xff0c;以确保数据的一致性和完整性。事务提供了一种机制&#xff0c;可以将多个操作合并为一个原子单元&#xff0c;这样要么所有操作都成功执行&#xff0c;要么在出现错误时&…

HarmonyOS开发实战( Beta5版)合理使用动画丢帧规范实践

本文列举了部分用于优化动画时延的正反案例&#xff0c;帮助开发者在遇到相似场景时进行优化&#xff0c;解决构建页面动画时遇到动画时延较长的问题。 减少动画丢帧 在播放动画或者生成动画时&#xff0c;画面产生停滞而导致帧率过低的现象&#xff0c;称为动画丢帧。 播放…

《Learning To Count Everything》CVPR2021

摘要 论文提出了一种新的方法来解决视觉计数问题&#xff0c;即在给定类别中仅有少量标注实例的情况下&#xff0c;对任何类别的对象进行计数。将计数问题视为一个少样本回归任务&#xff0c;并提出了一种新颖的方法&#xff0c;该方法通过查询图像和查询图像中的少量示例对象…

【Linux高级命令】2_查看日志命令(重点)

文章目录 一、查看日志文件1.1 日志文件1.2 查看日志信息&#xff1a;head1.3 查看日志信息&#xff1a; tail【重点】1.4 工作中的使用场景 二、查看操作系统信息 一、查看日志文件 1.1 日志文件 就是一个文本文件 里面记录了程序运行的信息 作用 通过最后几行信息&#xff…

JIT编译:Java性能加速的关键技术

JIT&#xff08;Just-In-Time&#xff09;编译是 Java 虚拟机&#xff08;JVM&#xff09;中一种重要的优化技术&#xff0c;用来在程序运行时动态地将字节码编译成机器码&#xff08;也就是平台特定的原生代码&#xff09;&#xff0c;从而提高程序的执行效率。 以下是 JIT 编…

领衔登榜!凯伦股份入选2024年度市级工业设计中心名单

近日&#xff0c;由苏州市工信局认定的2024年度市级工业设计中心名单正式完成了公示&#xff0c;江苏凯伦建材股份有限公司领衔登榜。 据了解&#xff0c;工业设计是指以工业产品为主要对象&#xff0c;综合运用科技手段和工学、美学、心理学、经济学等知识&#xff0c;对产品的…

2024.9.5 作业

注释QT基础代码 QT core gui#如果Qt版本大于4&#xff0c;则添加widgets模块 greaterThan(QT_MAJOR_VERSION, 4): QT widgets#启用C11编译标准 CONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been mark…

【机器学习】自然语言处理中的Transformer模型:深度解析与前沿发展

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言Transformer模型概述编码器&#xff08;Encoder&#xff09;与解码器&#xff08;Decoder&#xff09; 自注意力机制与多头注意力自注意力机制多头注意力机制 位置编码与模型优势位置编码模型优势…