idea必备插件及配置

目录

  • 代码检查相关
    • Alibaba Java Coding Guidelines
    • CheckStyle
    • findBugs
    • PMD
  • 样式优化
    • Grep Console(控制台输出处理)
    • Rainbow Brackets(彩虹括号)
  • 快捷生成
    • MybatisX
    • SequenceDiagram(一键生成时序图)
    • Maven Helper(分析Maven项目的相关依赖)
    • EasyCode(一键帮你生成所需代码)
    • Lombok
  • 调试
    • Java Stream Debugger(Java8 Stream调试器)
  • 定位
    • RestfulToolkit
    • CodeGlance(代码微型地图)
    • Jclasslib Bytecode Viewer
  • 配置
    • Idea Run dashboard配置
  • 云端部署
    • Alibaba Cloud Toolkit

 

代码检查相关

Alibaba Java Coding Guidelines

idea必备插件及配置_第1张图片

CheckStyle

作用:检查java源文件是否与代码规范相符,主要包括Javadoc注释、命名规范等。

使用

添加检查配置xml文件

idea必备插件及配置_第2张图片

点击要check的文件,就会根据配置的规范,提示出一系统的问题

idea必备插件及配置_第3张图片

 

检测出的问题

idea必备插件及配置_第4张图片

 

findBugs

基于Bug Patterns概念,查找java bytecode中的潜在bug。在目前版本中,它不检查java源文件。 主要检查bytecode中的bug patterns,也允许用户自定义特定的bug patterns。

使用

直接选中需要扫描的文件、包、项目或者changelist,右键findbugs进行扫描即可。

idea必备插件及配置_第5张图片

 

常见的问题

idea必备插件及配置_第6张图片

 

  • Bad practice 代码中的一些坏习惯

Class names should start with an upper case letter 主要包括类名的命名,以大写字母开头

Method names should start with a lower case letter 方法名以小写字母开头

Field names should start with a lower case letter 字段名以小写字母开头

equals()method does not check for null argument equals()方法应该检查非空

Class defines equals() and uses Object.hashCode() 一个类覆写了equals方法,没有覆写hashCode方法,使用了Object对象的hashCode方法

Method ignores exceptional return value 方法忽略返回值的异常信息

Equals method should not assume anything about the type of its argument equals(Object o)方法不能对参数o的类型做任何的假设。比较此对象与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的类型的对象时,结果才为 true。

Comparison of String objects using == or != 用==或者!=去比较String类型的对象

Method might ignore exception 方法可能忽略异常

Method invokes System.exit() 在方法中调用System.exit(…)语句,考虑用RuntimeException来代替

Method ignores result of InputStream.read() InputStream.read方法忽略返回的多个字符,如果对结果没有检查就没法正确处理用户读取少量字符请求的情况。

 

  • Dodgy code 糟糕的代码

Switch statement found where default case is missing Switch没有默认情况下执行的case语句

Switch statement found where one case falls through to the next case Switch语句中一个分支执行后又执行了下一个分支。通常case后面要跟break 或者return语句来跳出。

Dead store to local variable 该指令为局部变量赋值,但在其后的没有对她做任何使用。通常,这表明一个错误,因为值从未使用过。

Write to static field from instance method 在实例方法写入静态字段

Redundant nullcheck of value known to be non-null 方法中对不为空的值进行为空的判断。

Method uses the same code for two branches 此方法使用相同的代码,以实现两个有条件的分支。检查以确保这是不是一个编码错误

Exception is caught when Exception is not thrown 在try/catch块中捕获异常,但是异常没有在try语句中抛出而RuntimeException又没有明确的被捕获

Integral division result cast to double or float 整形数除法强制转换为double或者float类型。

Possible null pointer dereference due to return value of called method 方法的返回值没有进行是否为空的检查就重新赋值,这样可能会出现空指针异常。

Useless object created 对象创建了并没有用

Unread public/protected field 没有用到的字段

Internationalization 关于代码国际化相关方面的

Consider using Locale parameterized version of invoked method

使用平台默认的编码格式对字符串进行大小写转换,这可能导致国际字符的转换不当。使用以下方式对字符进行转换

 

  • Performance 关于代码性能相关方面的

Boxing/unboxing to parse a primitive 类型转换 比如字符串转换成int 应该使用Integer.parseInt(“”) 代替Integer.valueOf(“”)

Method concatenates string using + in aloop

每次循环里的字符串+连接,都会新产生一个string对象,在java中,新建一个对象的代价是很昂贵的,特别是在循环语句中,效率较低

解决办法:使用StringBuffer或者StringBuilder重用对象。

Private method is never called 私有方法没有被调用

Explicit garbage collection;extremely dubious except in benchmarking code

在代码中显式的调用垃圾回收命名,这样做并不能起作用。在过去,有人在关闭操作或者finalize方法中调用垃圾回收方法导致了很多的性能浪费。这样大规模回收对象时会造成处理器运行缓慢。

Unread field:should this field be static? 没有用到的static 字段

should be a static inner class 此内部类应该使用static修饰

 

  • Experimental试验性的代码

Method may fail to clean up stream or resource on checked exception

这种方法可能无法清除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动

解决方法:流的关闭都写在finally里面

Malicious code vulnerability 关于恶意破坏代码相关方面的

 

May expose internal representation by incorporating reference to mutable object

此代码把外部可变对象引用存储到对象的内部表示。如果实例受到不信任的代码的访问和没有检查的变化危及对象和重要属性的安全。存储一个对象的副本,在很多情况下是更好的办法。

Field isn’t final but should be 此字段前应该加final

Field isn’t final and can’t be protected from malicious code 此字段前应该加final

Field should be package protected

一个静态字段是可以被恶意代码或其他的包访问修改。可以把这种类型的字段声明为final类型的以防止这种错误。

 

  • Multithreaded correctness 关于代码正确性相关方面的

Static DateFormat DateFormat 在多线程中本身就是不安全的,如果在线程范围中共享一个DateFormat的实例而不使用一个同步的方法在应用中就会出现一些奇怪的行为。

Call to static DateFormat DateFormats多线程使用本事就是不安全的,改进方法:需要创建多实例或线程同步

 

  • Correctness 关于代码正确性相关方面的

Nullcheck of value previously dereferenced 此代码之前废弃null值检查。解决办法 进行null检查

Possible null pointer dereference 可能为null

Null pointer dereference 对象赋为null值后 没有被重新赋值

Possible null pointer dereference in method on exception path 在异常null值处理分支调用的方法上,可能存在对象去除引用操作

value is null and guaranteed to be dereferenced on exception path exception分支上,存在引用一个null对象的方法,引发空指针异常。

Self comparison of value with itself 方法中对一个局部变量自身进行比较运算,并可说明错误或逻辑错误。请确保您是比较正确的事情。

An apparent infinite recursive loop 明显的无限迭代循环,将导致堆栈溢出.

 

PMD

PMD是一种开源分析Java代码错误的工具。

与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。

使用

直接选中需要扫描的文件、包、项目或者changelist,右键run pmd进行扫描即可。

idea必备插件及配置_第7张图片

 

样式优化

Grep Console(控制台输出处理)

1. 自定义设置控制台输出颜色

我们可以在设置中进行相关的配置:

idea必备插件及配置_第8张图片

2. 过滤控制台输出

 

Rainbow Brackets(彩虹括号)

使用各种鲜明的颜色来展示你的括号

 

快捷生成

MybatisX

  • Java 与 XML 调回跳转
  • Mapper 方法自动生成 XML 

 

SequenceDiagram(一键生成时序图)

同样是一个必备的一个IDEA插件,非常实用。我一般用它来生成简单的方法时序图,方便我们阅读代码,特别是在代码的调用层级比较多的时候。

使用方法很简单,选中方法名(注意不要选类名),然后点击鼠标右键,选择 Sequence Diagram 选项即可

idea必备插件及配置_第9张图片

 

Maven Helper (分析Maven项目的相关依赖)

主要用来分析Maven项目的相关依赖,可以帮助我们解决Maven依赖冲突问题。

idea必备插件及配置_第10张图片

何为依赖冲突?

说白了就是你的项目使用的2个jar包引用了同一个依赖h,并且h的版本还不一样,这个时候你的项目就存在两个不同版本的 h。这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的Jar包,而另一个无用的Jar包则未被使用,这就是所谓的依赖冲突。

大部分情况下,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个Jar包来使用。但是,不排除在某些特定条件下,会出现类似找不到类的异常。

 

EasyCode(一键帮你生成所需代码)

Easycode 可以直接对数据的表生成entity、controller、service、dao、mapper无需任何编码,简单而强大。

 

Lombok

使用 Lombok 能够帮助我们少写很多代码比如 Getter/Setter、Constructor等等。

要引入相关的依赖。

org.projectlombok

lombok

true


调试

Java Stream Debugger(Java8 Stream调试器)

idea必备插件及配置_第11张图片

 idea必备插件及配置_第12张图片

 

定位

RestfulToolkit

搜索URL,准确的说是搜索SpringMVC项目里,Controller层的@RequestMapping里的URL,通过URL匹配到相应的Controller层方法

使用:

  • 根据 URL 直接跳转到对应的方法定义 (Ctrl + \ );
  • 提供了一个 Services tree 的显示窗口;
  • 一个简单的 http 请求工具;
  • 在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数...
  • 其他功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 

 

CodeGlance(代码微型地图)

提供一个代码的微型地图,当你的类比较多的时候可以帮忙你快速定位到要去的位置。这个插件在我们日常做普通开发的时候用处不大,不过,在你阅读源码的时候还是很有用的,如下图所示:

idea必备插件及配置_第13张图片

 

Jclasslib Bytecode Viewer

点击菜单栏【View】,弹出下拉选项,在选项中找到【Show Bytecode】按钮,单击此按钮,来查看java类字节码。

idea必备插件及配置_第14张图片

 

配置

Idea Run dashboard配置

找到.idea下面的workspace.xml文件

 name="RunDashboard">  

     name="configurationTypes">  

        

         value="SpringBootApplicationConfigurationType" />  

        

      

     name="ruleStates">  

        

          

           name="name" value="ConfigurationTypeDashboardGroupingRule" />  

          

          

           name="name" value="StatusDashboardGroupingRule" />  

          

        

      

  

 

云端部署

Alibaba Cloud Toolkit

阿里云针对 IDE 平台为开发者提供的一款插件,用于帮助开发者高效开发并部署适合在云端运行的应用。

 

 

 

 

你可能感兴趣的:(idea)