专栏名称: SegmentFault思否
SegmentFault (www.sf.gg)开发者社区,是中国年轻开发者喜爱的极客社区,我们为开发者提供最纯粹的技术交流和分享平台。
目录
相关文章推荐
程序员的那些事  ·  清华大学:DeepSeek + ... ·  昨天  
程序员的那些事  ·  印度把 DeepSeek ... ·  昨天  
程序员小灰  ·  清华大学《DeepSeek学习手册》(全5册) ·  昨天  
OSC开源社区  ·  2024: 大模型背景下知识图谱的理性回归 ·  2 天前  
程序员小灰  ·  DeepSeek做AI代写,彻底爆了! ·  4 天前  
51好读  ›  专栏  ›  SegmentFault思否

7 个显著提升编码效率的 IntelliJ IDEA 必备插件

SegmentFault思否  · 公众号  · 程序员  · 2019-11-12 12:01

正文

作者:房上的猫
原文链接:
cnblogs.com/lsy131479/p/9646444.html




No.1

idea 引入外部插件的方式



1. 打开 settings 配置面板

2.选择 plugins--》install pluginfrom disk 选择相应插件包 ==》点击ok


最后,“Restart” 重启 idea 让它加载一下新加入的插件!!!


No.2

常用插件



下面的所有插件都使用上面外部引用方式集成相应的插件包即可

1. FindBugs-IDEA


作用:


•  检测代码中可能的bug及不规范的位置。
写完代码后检测下,避免低级 bug。

静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。

插件提供地址:

https://plugins.jetbrains.com/plugin/3847-findbugs-idea


成功标志:

重启 idea 后如果插件加载成功左下角出现:

实际应用:





扫描完成后:


附录 (网摘)


FindBugs 它用来查找 Java 代码中存在的 bug。它使用静态分析方法标识出Java程序中上百种潜在的不同类型的错误。

FindBugs 支持对包级别、项目级别、模块级别、单个文件级别,以及自定义范围的 Bug 分析。

FindBugs:特色是能够检查出空指针异常这种 bug!

使用:右键单击 (module、单个文件等) --->在快捷菜单中选择 findbugs 即可

附:FindBugs 的 Bug 种类说明


•  Bad practice 坏的实践

一些不好的实践,下面列举几个:

HE: 类定义了equals(),却没有hashCode();或类定义了equals(),却使用Object.hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()。

SQL: Statement 的execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。

DE: 方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。Malicious code vulnerability 可能受到的恶意攻击

如果代码公开,可能受到恶意攻击的代码,下面列举几个:

FI: 一个类的finalize()应该是protected,而不是public的。

MS: 属性是可变的数组;属性是可变的Hashtable;属性应该是package protected的。

类名小写问题:

Correctness 一般的正确性问题

可能导致错误的代码,下面列举几个:

NP: 空指针被引用;在方法的异常路径里,空指针被引用;方法没有检查参数是否 null;null 值产生并被引用;null 值产生并在方法的异常路径被引用;传给方法一个声明为 @NonNull 的 null 参数;方法的返回值声明为 @NonNull 实际是 null。

Nm: 类定义了 hashcode() 方法,但实际上并未覆盖父类 Object 的 hashCode();类定义了 tostring() 方法,但实际上并未覆盖父类 Object 的 toString();很明显的方法和构造器混淆;方法名容易混淆。

SQL: 方法尝试访问一个 Prepared Statement 的 0 索引;方法尝试访问一个 ResultSet 的 0 索引。

UwF: 所有的 write 都把属性置成 null,这样所有的读取都是 null,这样这个属性是否有必要存在;或属性从没有被 write。

Dodgy 危险的

具有潜在危险的代码,可能运行期产生错误,下面列举几个:

CI: 类声明为 final 但声明了 protected 的属性。

DLS: 对一个本地变量赋值,但却没有读取该本地变量;本地变量赋值成 null,却没有读取该本地变量。

ICAST: 整型数字相乘结果转化为长整型数字,应该将整型先转化为长整型数字再相乘。

INT: 没必要的整型数字比较,如 X <= Integer.MAX_VALUE。

NP: 对 readline() 的直接引用,而没有判断是否 null;对方法调用的直接引用,而方法可能返回 null。

REC: 直接捕获 Exception,而实际上可能是 RuntimeException。

ST: 从实例方法里直接修改类变量,即 static 属性。


Performance 性能问题


可能导致性能不佳的代码,下面列举几个:

DM: 方法调用了低效的 Boolean 的构造器,而应该用 Boolean.valueOf(…);用类似 Integer.toString(1) 代替 new Integer(1).toString();方法调用了低效的 float 的构造器,应该用静态的 valueOf 方法。

SIC: 如果一个内部类想在更广泛的地方被引用,它应该声明为 static。

SS: 如果一个实例属性不被读取,考虑声明为 static。

UrF: 如果一个属性从没有被 read,考虑从类中去掉。

UuF: 如果一个属性从没有被使用,考虑从类中去掉。

•  Multithreaded correctness 多线程的正确性多线程编程时

可能导致错误的代码,下面列举几个:

ESync: 空的同步块,很难被正确使用。

MWN: 错误使用 notify(),可能导致 IllegalMonitorStateException 异常;或错误的使用 wait()。

No: 使用 notify() 而不是 notifyAll(),只是唤醒一个线程而不是所有等待的线程。

SC: 构造器调用了 Thread.start(),当该类被继承可能会导致错误。

•  Internationalization 国际化


当对字符串使用 upper 或 lowercase 方法,如果是国际的字符串,可能会不恰当的转换。

2. Maven Helper


作用:


一键查看 maven 依赖,查看冲突的依赖,一键进行 exclude 依赖, 对于大型项目非常方便。

插件提供地址:

https://plugins.jetbrains.com/plugin/7179-maven-helper


成功标志:


重启 idea 后如果插件加载成功,打开 pom 文件左下角出现:

实际应用:


切换 Dependency Analyzer 试图即可进行相应操作:

1) Conflicts (查看冲突)
2) All Dependencies as List (列表形式查看所有依赖)
3) All Dependencies as Tree (树形式查看所有依赖)

选中右键就可以 Exclude 啦,想用 1.2 就把其他版本的 Exclude 掉,想用 1.1.3 就把其他版本的 Exclude 掉,很方便。

3. VisualVM Launcher


作用:


运行 java 程序的时候启动 visualvm,方便查看 jvm 的情况,比如堆内存大小的分配。 某个对象占用了多大的内存,jvm 调优必备工具。

插件提供地址:

https://plugins.jetbrains.com/plugin/7115-visualvm-launcher


成功标志:


重启 idea 后如果插件加载成功右上角出现:

实际应用:


非常感谢有一个大佬,给我的评论,我研究了一下才知道实际应用,非常感谢哈,

实际应用:

首先需要一个客户端 (这里已经为大家准备好)


链接:
https://pan.baidu.com/s/1kIduEykNNrYyZd1CwJpntg
密码: bxib

将客户端解压
打开 settings 配置面板
配置 excutable===》选择到客户端的 bin 目录的 visualvm.exe 文件

然后点击 ok。 apply 应用一下


右键使用 VM 插件启动

然后会自动加载程序:

可查看 jvm 状态,然后就可以自行调试咯:

具体怎么搞,就看你们自己想怎么搞咯,本博主后期也会发布 jvm 调优的博客的。

4. GenerateAllSetter


作用:


一键调用一个对象的所有 set方 法并且赋予默认值 在对象字段多的时候非常方便。

插件提供地址:

https://plugins.jetbrains.com/plugin/9360-generateallsetter


成功标志:

。。。。。。


实际应用:


通过 alt +enter 生成一个类所有 setter 方法的默认值
当两个对象转换器具有相同的字段时,为它们生成一个 set 方法
当 returnType 是 List Set Map 时生成默认值

5. Rainbow Brackets


作用:


彩虹颜色的括号 看着很舒服 敲代码效率变高。。清除分清括号个数,防止括号错乱。

插件提供地址:

https://plugins.jetbrains.com/plugin/10080-rainbow-brackets


成功标志:


重启 idea 后如果插件加载成功右下角出现弹出框







请到「今天看啥」查看全文