IDEA 的代码检测是真的智能,但是有些人就是不关注代码飘黄

2019-09-24 11:14:13 +08:00
 qwerthhusn

Java 静态检查工具,IDEA 自带的最智能,无论是代码优化建议还是分支检测出来的潜在的 BUG。 只要你关注代码飘黄的部分,九成都是可以优化的或者是 BUG (包括很隐晦的要自己估计很久都看不出来的),不如鼠标放上去看一下

然后就是 FindBugs,但是以我的经验,如果 IDEA 的都处理了,FindBugs 好像也扫不出来什么东西了。

PMD,CheckStyle 这种更像是代码风格检查工具。

BTW:阿里巴巴的静态代码检查,我认为这种东西新手用一下还是不错的。对于经验比较丰富的老鸟,基本上无用处。举个例子,不让你用Executors.new...而是直接去用ThreadPoolExecutor,就是为了能更好理解 Java 线程池。再举个例子,要求你把每一个@Transactional都显示指定上rollbackFor,就是为了能正确理解 Spring 事务回滚机制。


我有一个朋友,他就是没记性,去定位 BUG,最后花了很久才看出来的一个分支 BUG,而且 IDEA 都已经检测出来了。 中间我估计跟他说过不下三四次了,但是最近一看他新的代码,还是满屏密密麻麻的黄框。。。

真的很奇怪,有些人就是不长记性,也不清楚为什么,我之前的一个刚开始干的同事,不关注代码缩进,最后一大篇代码跟鸡挠的一样,甚至有多少个方法都一眼看不出来。跟他说过无数次,但是后面发现新提交的还是那样。


本来主旨是想吐槽一波不长记性的人,但是还是忍不住吹了一波 IDEA 的静态代码审查。

8254 次点击
所在节点    程序员
46 条回复
promise2mm
2019-09-24 11:26:59 +08:00
@Transactional 类似这种飘黄 我都是直接 Disable Inspection 以后就不提示了
qwerthhusn
2019-09-24 11:37:45 +08:00
@promise2mm 那你感觉阿里的这个能检测出实际有用的东西么?举个例子
StevenTong
2019-09-24 11:41:27 +08:00
看人,我会去看这种东西.
tulongtou
2019-09-24 11:41:58 +08:00
不是所有人都有工匠精神,不是所有人都热爱编程,绝大部分人仅仅是把它当作一个糊口都工具,管他黄不黄呢,有饭吃就行
winterbells
2019-09-24 11:42:46 +08:00
防风打火机防风但不防 sb
xuanbg
2019-09-24 11:42:54 +08:00
阿里规约里面 Executors.new 和 @Transactional 这两个真的是超级讨厌,我都是要 disable 掉的。
gamexg
2019-09-24 12:01:03 +08:00
飘黄太多也挺烦人,
而且很多我知道自己在做什么,不需要标记,但是它还是标记。

昨天刚碰到的不必要的提示:
一些关闭文件、连接的操作没有检查返回值是否关闭成功。
我自认为是很小心,基本全部的返回值都会做检查,除非是实在没意义的,这种提示对我是没大意义的。

初始化时打开配置文件检查到出错时直接 log.Fatal,Fatatl 内部会调用 os.Exit。
但是 idea 识别不到调用了 os.Exit,还是警告文件可能为 null。
passerbytiny
2019-09-24 12:01:07 +08:00
零黄与满屏黄是等价的,偶尔飘黄才有价值。工具检测只是辅助,只要没有人工评审,基本都是五十步笑百步。

至于阿里的规则,那是给专职评审人员——不写代码、只负责评审代码、懒得针对工具的不足做额外工作——准备的。
zjp
2019-09-24 12:11:43 +08:00
见过别人整个屏幕都是黄色的…

@tulongtou bug 迟早要修的。解决静态检查的告警的成本很低,多数时候 IDEA 可以自动处理
chengyiqun
2019-09-24 12:32:46 +08:00
很多时候, 修的成本还是有点高的, 有的人代码组织结构不好, 跑着虽然没问题, 但是看起来及其不爽. 我之前有个睿智的同事, 一个场景有多个低级错误, 空指针数组越界一堆. equals 方法, 常量不写前面, webservice 返回的数组不判长度就直接取, String 和 Date 类型也用 equals 比较, 简直了....然后和另一个同时修这个服务的代码等于是重新开发了一遍. 他已经是我们项目组所有人都清楚的不靠谱的人了.
chengyiqun
2019-09-24 12:34:23 +08:00
我写代码都尽量让代码美观易读, javadoc 都认真的写的. 甚至 javadoc 上都用 html 标签, 标注关键信息. 不是我自夸, 我是我们项目组里最强迫症的那个人.
0x4F5DA2
2019-09-24 12:37:47 +08:00
配合 SonarLint 以及阿里规约使用效果更佳
chocotan
2019-09-24 12:53:38 +08:00
阿里那玩意儿安装了,发现很多根本没问题的地方也提示,就删了。
hhhsuan
2019-09-24 12:57:16 +08:00
没有洁癖的程序员不是好的程序员,我都是告警全部清空的,留一个都很扎眼。
CEBBCAT
2019-09-24 13:04:39 +08:00
错误报告都懒得读,还管你飘黄?你以为你老几啊?

zhady009
2019-09-24 13:13:17 +08:00
我也有点代码洁癖..一般只有 field injection 的警告

多注意下挺好的 起码对自己的代码质量有提升
luckyrayyy
2019-09-24 13:14:52 +08:00
我是百分百要解决的,只有提示代码重复,让我重构的可能视长度解不解决。
Salvation
2019-09-24 13:15:16 +08:00
idea 的代码检测我关闭了不少,原因是每次代码才写到一半,就开始各种黄,难受。
dobelee
2019-09-24 13:17:07 +08:00
坚决扫荡任何一片黄色。
Mogamigawa
2019-09-24 13:23:07 +08:00
以后测试组就叫 扫黄打红小组 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/603637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX