一行代码三个Bug 专业写Bug十余载 False Unused “private” methods should be removed

不用不知道,一用吓一跳,原来这么多Bug,这么多坏味道。sonarqube就是神一样的存在,能把代码中各种不规范,各种逻辑漏洞,各种容易出问题的写法都一一指出来,并附带了详细的说明与修改参考,可谓是一个Coding利器。被sonarqube不断的“调教”,代码就越来越规范,整个团队的代码就越来越统一。这个过程是有点小小的煎熬。sonarqube就像一位不会生气的好同事,一点一点帮我把所有写得不好的地方指出来,再怎么煎熬也是值得。

相见恨晚

第一次见到sonarqube就非常喜欢TA,这远远超出了我早前设想的代码检查工具,采用反射+正则进行代码分析,既然有现成的sonarqube,我也没有太大的动力去实现这个梦想中的想法。这已经是第二次写sonarqube了,每一次写,感触都不一样。

sonarqube Bug

每次去坏味道,一个一个去,一个一个调整,处理到private method的时候,都有点抓狂,明明这个private methed被使用到了,却一直提示False Unused “private” methods should be removed,这个事情都有点冲动,想要写一个自己的代码分析器,不想被sonarqube调戏。今天查了好久的资料,终于在stackoverflow查到,这原来是sonarqube的一个bug,最新的版本,已经没有这问题了。

使用sonarqube的过程,就是养成一种coding习惯的问题,不用刻意去记要这样写要那样写,这规则那规则,跑起sonarqube,让工具来告诉你哪里不合理,哪里要调整,多经历几次 ,就自然的养成了一种全球化的规范coding习惯。

图书云公众号二维码

图书云公众号二维码

  1. 代码不要嵌套太深

​sonarqube会告诉你,代码不能超过三层嵌套,要直观明了,不能一层一层无限嵌套。try算一层if算一层while算一层for也算一层,一般来讲,不用sonarqube来检查,很容易凭自己的感觉写出深度嵌套的代码。嵌套越深,意味着代码的复杂度越高,越难维护。有的时候,自己不觉得,别人接手的话,会很痛苦。这大概,是sonarqube这个规则的出发点。所以,依据这个规则提示,重构代码,如果层次要越过3层了,就赶紧写个新的方法,这样子避免一个方法中的嵌套越过3层。依据09年在人力资本职场所学到的经验,通常,人类不擅长处理5个因子以上事情,能控制在3个因子里,效率更高。所以,我们尽量拆解拆解,像sonarqube这个嵌套检查规则,不要超过3层。

2.驼峰命名

如果写习惯了C#的BLL,跑到java里,写bll,是不是感觉很别扭,按sonarqube的提示去修改吧,也不用太刻意想,跑sonarqube,这些小细节,都能查出来!编码规范就是这么被执行的,不用人来review代码规范,用工具就统一了。

3.判断的时候值在前还是变量在前

sonarqube会要求你把值写在前面,这里面有什么故事么?可以使用公众号回复why查看原因。

4.catch到exceptiony请写日志

悄悄的吞掉ex,那怎么行,sonarqube不会给通过的,代码都发布不了。想想也是,有了异常,连个日志都不写,是有点不妥。

5.不关闭文件操作网络操作可不行

sonarqube会告诉你,有文件流操作没有关闭,让补上。一般网上找代码,拿过来用,都可能会有这啊那的问题,拿sonarqube做个检查,是再好不过的。

6.没用的参数去掉

如果定义了多个参数,但是有的参数却不使用,sonarqube,会要求你删除掉。

7.定义了本地变量不使用

不行,sonarqube不允许。

8.定义了一个本地变量,用了一次

不行,sonarqube提示你,是不是可以省下这个本地变量

9.是不是使用lambda

sonarqube会跟你说,有更简洁的lambda写法,请换个写法

10.你看,那对括号可以省掉

如果在filter,多加了括号,sonarqube会跳出来,告诉你,省下这两个括号。

11.哎呀,重复代码

sonarqube控制代码重复,重构,再重构,达到sonarqube的要求。这个地方最最让人揪心的是单元测试与重复代码的前世今生。回复powermock查看我写单元测试的经验心得。

12.布尔条件请合并合并

sonarqube告诉你,不要秀两个if,合并成一条吧。

还有很多很多sonarqube的Coding提示,内置了很多优秀的coding风格,说这么多,也是希望每一位朋友都能重视代码质量,都能使用一下sonarqube,相信你也会喜欢这款代码质量检查工具,对于公司,对于团队,对于个人来讲,都是一个非常不错的研发质量保证工具。

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注