Java 静态检查工具,IDEA 自带的最智能,无论是代码优化建议还是分支检测出来的潜在的 BUG。 只要你关注代码飘黄的部分,九成都是可以优化的或者是 BUG (包括很隐晦的要自己估计很久都看不出来的),不如鼠标放上去看一下
然后就是 FindBugs,但是以我的经验,如果 IDEA 的都处理了,FindBugs 好像也扫不出来什么东西了。
PMD,CheckStyle 这种更像是代码风格检查工具。
BTW:阿里巴巴的静态代码检查,我认为这种东西新手用一下还是不错的。对于经验比较丰富的老鸟,基本上无用处。举个例子,不让你用Executors.new...
而是直接去用ThreadPoolExecutor
,就是为了能更好理解 Java 线程池。再举个例子,要求你把每一个@Transactional
都显示指定上rollbackFor
,就是为了能正确理解 Spring 事务回滚机制。
我有一个朋友,他就是没记性,去定位 BUG,最后花了很久才看出来的一个分支 BUG,而且 IDEA 都已经检测出来了。 中间我估计跟他说过不下三四次了,但是最近一看他新的代码,还是满屏密密麻麻的黄框。。。
真的很奇怪,有些人就是不长记性,也不清楚为什么,我之前的一个刚开始干的同事,不关注代码缩进,最后一大篇代码跟鸡挠的一样,甚至有多少个方法都一眼看不出来。跟他说过无数次,但是后面发现新提交的还是那样。
本来主旨是想吐槽一波不长记性的人,但是还是忍不住吹了一波 IDEA 的静态代码审查。
1
promise2mm 2019-09-24 11:26:59 +08:00
@Transactional 类似这种飘黄 我都是直接 Disable Inspection 以后就不提示了
|
2
qwerthhusn OP @promise2mm 那你感觉阿里的这个能检测出实际有用的东西么?举个例子
|
3
StevenTong 2019-09-24 11:41:27 +08:00
看人,我会去看这种东西.
|
4
tulongtou 2019-09-24 11:41:58 +08:00 12
不是所有人都有工匠精神,不是所有人都热爱编程,绝大部分人仅仅是把它当作一个糊口都工具,管他黄不黄呢,有饭吃就行
|
5
winterbells 2019-09-24 11:42:46 +08:00 via Android 5
防风打火机防风但不防 sb
|
6
xuanbg 2019-09-24 11:42:54 +08:00
阿里规约里面 Executors.new 和 @Transactional 这两个真的是超级讨厌,我都是要 disable 掉的。
|
7
gamexg 2019-09-24 12:01:03 +08:00
飘黄太多也挺烦人,
而且很多我知道自己在做什么,不需要标记,但是它还是标记。 昨天刚碰到的不必要的提示: 一些关闭文件、连接的操作没有检查返回值是否关闭成功。 我自认为是很小心,基本全部的返回值都会做检查,除非是实在没意义的,这种提示对我是没大意义的。 初始化时打开配置文件检查到出错时直接 log.Fatal,Fatatl 内部会调用 os.Exit。 但是 idea 识别不到调用了 os.Exit,还是警告文件可能为 null。 |
8
passerbytiny 2019-09-24 12:01:07 +08:00
零黄与满屏黄是等价的,偶尔飘黄才有价值。工具检测只是辅助,只要没有人工评审,基本都是五十步笑百步。
至于阿里的规则,那是给专职评审人员——不写代码、只负责评审代码、懒得针对工具的不足做额外工作——准备的。 |
9
zjp 2019-09-24 12:11:43 +08:00 via Android
|
10
chengyiqun 2019-09-24 12:32:46 +08:00
很多时候, 修的成本还是有点高的, 有的人代码组织结构不好, 跑着虽然没问题, 但是看起来及其不爽. 我之前有个睿智的同事, 一个场景有多个低级错误, 空指针数组越界一堆. equals 方法, 常量不写前面, webservice 返回的数组不判长度就直接取, String 和 Date 类型也用 equals 比较, 简直了....然后和另一个同时修这个服务的代码等于是重新开发了一遍. 他已经是我们项目组所有人都清楚的不靠谱的人了.
|
11
chengyiqun 2019-09-24 12:34:23 +08:00
我写代码都尽量让代码美观易读, javadoc 都认真的写的. 甚至 javadoc 上都用 html 标签, 标注关键信息. 不是我自夸, 我是我们项目组里最强迫症的那个人.
|
12
0x4F5DA2 2019-09-24 12:37:47 +08:00
配合 SonarLint 以及阿里规约使用效果更佳
|
13
chocotan 2019-09-24 12:53:38 +08:00
阿里那玩意儿安装了,发现很多根本没问题的地方也提示,就删了。
|
14
hhhsuan 2019-09-24 12:57:16 +08:00
没有洁癖的程序员不是好的程序员,我都是告警全部清空的,留一个都很扎眼。
|
15
CEBBCAT 2019-09-24 13:04:39 +08:00 via Android
错误报告都懒得读,还管你飘黄?你以为你老几啊?
逃 |
16
zhady009 2019-09-24 13:13:17 +08:00
我也有点代码洁癖..一般只有 field injection 的警告
多注意下挺好的 起码对自己的代码质量有提升 |
17
luckyrayyy 2019-09-24 13:14:52 +08:00
我是百分百要解决的,只有提示代码重复,让我重构的可能视长度解不解决。
|
18
Salvation 2019-09-24 13:15:16 +08:00
idea 的代码检测我关闭了不少,原因是每次代码才写到一半,就开始各种黄,难受。
|
19
dobelee 2019-09-24 13:17:07 +08:00 via Android
坚决扫荡任何一片黄色。
|
20
Mogamigawa 2019-09-24 13:23:07 +08:00 2
以后测试组就叫 扫黄打红小组 吧
|
21
qiyuey 2019-09-24 13:52:49 +08:00
无非就是:懒、笨、又懒又笨
|
22
chendy 2019-09-24 14:06:28 +08:00 1
曾经接手老项目,打开代码仿佛有人尿在了屏幕上一样…
|
23
iffi 2019-09-24 14:21:09 +08:00
SonarLint 飘过
|
24
zek 2019-09-24 15:08:31 +08:00
虽然看着难受,但是真没时间管它
|
25
way2create 2019-09-24 15:23:09 +08:00
我觉得 jb 家的错误呈现方式挺好的,vscode 插件那种挺烦的,有些 warning 又不是错误 仅仅是没检测到 自己的项目还好 看别人的老项目就特烦了 也不可能一个个去弄 有些也没必要弄
|
26
shanlan 2019-09-24 15:45:28 +08:00
接手遗留的项目,满屏幕的黄点点、波浪线,WebStorm
|
27
pwrliang 2019-09-24 15:49:57 +08:00
+1,Idea 的 check 真的很好。除非那种带范型的类型强转检查的话一般我不会 fix,其他的都会 fix。
|
28
l8g 2019-09-24 15:52:01 +08:00
黄的我一般能处理的都会处理掉,关掉简直就是掩耳盗铃。
|
29
fvckDaybyte2 2019-09-24 16:14:23 +08:00 via iPhone
扫黄小组?
|
30
liuhuansir 2019-09-24 16:24:10 +08:00
@shanlan webstorm 不太准,可能是因为 js 是动态语言吧,很多波浪线根本没法解决,比如 Unresolved variable xxx 这种
|
31
gIrl1990 2019-09-24 16:55:17 +08:00
这就是偏洁癖或者强迫症那一类了
|
32
FightForFreedom 2019-09-24 16:58:39 +08:00
有一说一,阿里的检查插件,一些检查出的错误想 suppressWarning 都 suppress 不了
|
33
hitoriga 2019-09-24 17:17:40 +08:00
有个段子,说的是电梯井在维修,门敞着,门口放着个牌子上面写着"ERROR",有个路人觉得很奇怪说这么危险的东西怎么才放个 error 在这里啊,拿了个 WARNING 牌子把原本的替换掉了。
于是当天好多程序员掉下去摔死了 |
34
aguesuka 2019-09-24 19:05:06 +08:00 via Android
1.用构造方法注入。2.如果是单个项目,按照 idea 的做不会有问题。如果是要打成 jar 包,用接口。4 拼写错误 alt+回车可以保存单词,代码重复十有八九可以抽象,5.这种警告让我学了不少东西。
|
35
starsriver 2019-09-24 19:20:44 +08:00 via Android
我直接在控制器里面噜 sql,一片黄。懒得分模块。
|
36
phantomzz 2019-09-24 19:25:32 +08:00
@xuanbg 我们团队严禁使用 Executors 的任何 new 线程池方法,我们的业务量比较大,不指定队列长度很有可能会 OOM
|
37
magiclz233 2019-09-24 19:26:45 +08:00
mybatis mapper.xml 里面全部飘黄,是不是也得改。本来就测试 Executors 想快点敲一个线程池,在那飘黄。无语了
|
38
Varobjs 2019-09-24 19:27:10 +08:00 via Android
phpstorm 也是会提示很多 warn 什么的
有的人就是不管。看别人代码难受 比如 写 很多 if else 每个分支定义相同变量,但有的分支会漏掉,IDE 就可以提示。 同样用 IDE 真烦有人写出来的,跟 text editor 写出来的一样。 还有代码格式化问题, 随手一个 Ctrl + Alt + l,Ctrl + Alt + o 很难吗 |
40
jaylee4869 2019-09-24 19:29:23 +08:00
扫黄!问一下你们 @Autowired 注入的时候,是改成构造注入吗?
|
42
yanguangs 2019-09-24 19:42:45 +08:00
@magiclz233 你没有在 idea 里面链接数据库吧?
|
43
oneisall8955 2019-09-25 07:44:56 +08:00 via Android
配合阿里的插件,扫除更多的飘黄我就很烦,自己打的新的代码,硬生生改成没有黄色才舒服。
|
44
xaplux 2019-09-25 08:53:55 +08:00 via Android
代码洁癖,不允许飘黄,确实没有问题的情况就把对应的警告提示关闭
|
45
burnbrid 2019-09-25 09:59:20 +08:00
社区版本会飘黄吗? idea 这么好用啊 ?社区版本会飘黄吗,社区版本会飘我也下载一个区。
|
46
lzh414895156 2019-09-27 16:47:44 +08:00
强迫症的我表示代码里没有一个飘黄...
|