恕我直言,IDEA的这个分析功能,只有不到10%的程序员知道...
最近,有同学问我,为什么你如此钟爱IDEA?
因为你越用越顺手,还能不断给你惊喜,让你乐此不疲的去挖掘它的功能。
就比如,我最近在stackoverflow上刷到的一个帖子:How to use IntelliJ IDEA to find all unused code?
直译过来,就是怎么通过IDEA找到未使用过的代码?让我吃惊的是竟然有有这么多的程序员不知道有这个功能。
到这里,不得不说说IDEA中的静态代码分析能力竟然如此强大!
那咱们先来解决上面那个问题:如何找出未使用的代码?其实很简单的,就是用它的代码分析功能,菜单栏:Analyze->Run Inspection By Name(译:通过名字来检查),或者用快捷键 ctrl+alt+shift+i,如下图:
再从下拉列表中,选择Unused declaration,如下图:
这样便能找出未被使用的代码,而且它还提供了4中解决方案,如下图所示:
这只是它代码分析功能的冰山一角,它支持许多语言的检查功能,不仅能帮我们发现代码中的编译错误,还能发现效率低下的代码问题,比如:unreachable code, unused code, non-localized string, unresolved method, memory leaks, spelling problems 等问题。
这里大家可以看到IDEA在默认情况下,会分析所有的打开文件,有问题的代码会在编辑器右侧显示,可以看到整个文件的所有分析状况,如下图所示:
而且它支持灵活配置,可以自己启用/禁用某个代码检查行为,改变问题的严重等级,创建自定义的检查配置问题,根据需求选择检查范围,如下图所示:
下面我来整体解读一下它的静态代码分析功能。
1、代码规范检查
打开 Analyze -> Inpect Code,检查代码是否符合 Settings -> Inspections 的设置,检查结果如下图所示:
2、检查指定的 Inspections 项
打开 Analyze -> Run Inspection By Name,输入要检查的项,如下图所示:
3、推断无效代码
打开 Analyze -> Infer Nullity,可以分析无效代码,如下图所示:
4、分析代码依赖
打开 Analyze -> Analyze Dependencies,查看依赖结果,如下图所示
5、分析代码反向依赖
打开 Analyze -> Analyze Backward Dependencies,查看反向依赖结果,如下图所示:
6、分析模块依赖
打开 Analyze -> Analyze Module Dependencies,查看模块依赖,如下图所示:
7、分析 DSM 分层依赖
打开 Analyze -> Analyze Dependency Matrix,查看依赖结构矩阵,如下图所示:
8、分析循环依赖
打开 Analyze -> Analyze Cyclic Dependencies,查看循环依赖关系,如下图所示:
9、分析堆栈跟踪信息
打开 Analyze -> Analyze Stacetrace,输入堆栈信息,如下图所示:
10、Analyze Dataflow to Here
它展示了这个变量的值是从哪些地方传递过来的,并且包含传递给改变了的值是那里传递过来的,值的传递链,如下图所示:
11、Analyze Dataflow to Here
它展示了这个变量的值传递到了哪些地方,并且包含传递之后的值又被传递到哪些地方去了,值的传递链。
总得来说,IDEA给我们提供的分析功能已经足够用了,但是还有一些第三方的插件可供我们使用,比如FindBugs、alibaba-java-coding-guidelines等。
IDEA确实有趣,咱们一起来玩转它,哈哈~~~
推荐阅读