一小时写给同组的如何使用工具检测代码质量

因为要做个小项目,同组的同事都比较年轻,为了规范下代码,因此简单的写了下怎么提高代码质量,分享一下:

在接口不通的情况下进行单元测试

使用Mockito, 如果获取余额部分代码为:

{private BizPayService bizPayService;@Overridepublic BigDecimal getBalance(String pin) {try {return bizPayService.getBalace(“”, 0);} catch (BizVirtualPayException e) {e.printStackTrace();}return null;}(BizPayService bizPayService) {this.bizPayService = bizPayService;}}

bizPayService为一个dubbo接口,如果没有提供,那么测试代码如下:

{() throws BizVirtualPayException{PayServiceImpl payService = new PayServiceImpl();BizPayService bizPayService = mock(BizPayService.class);when(bizPayService.getBalace(“”, 0)).thenReturn(new BigDecimal(20.00));payService.setBizPayService(bizPayService);Assert.assertEquals(20.00, payService.getBalance(“”).doubleValue(), 0);}}单元测试覆盖率安装Eclemma, 安装包点击这里下载安装后在eclipse中:

多了最左侧的图标对测试代码右键Coverage as进行执行,执行完后:

显示该测试代码覆盖率展开可见:

红色为未覆盖部分,说明该处代码没有测试到可能存在隐患代码质量三驾马车之一-findbugs

静态代码缺陷检测工具 1. 对代码击右键,选择FindBugs->FindBugs,我们的开发环境中一般内置了该插件 2. 执行完成后,在代码根目录会显示找到的缺陷个数如图:

3. 打开对应的类,在左边框有如下的图标,点之:

4. 下面会出现具体的说明:

5. 对字段进行说明 Confidence 是造成缺陷的可能性, 一般为High的必须解决,这里是因为日志过滤其中使用了静态变量,而用实例方法对静态变量有可能导致并发的问题。 6. 要求 Confidence 为Hign的必须解决。 其他Confidence的必须理解其可能会造成的影响,确定不会影响系统运行时可以不解决 7. 常见问题

用==比较对象我们出现过这个问题,用==比较Integer导致bug

成员变量和局部变量同名会导致变量被覆盖 …代码质量三架马车之二-CheckStyle对代码击右键Window->Show view-> CheckStyle->Checkstyle violations打开一个新的View,有所有代码规范有问题的列

常见问题 这个工具只有代码规范和风格的检查,一般我们需要注意: 代码质量三家马车之三-PMD

比CheckStyle功能更强的静态代码检查工具,主要是检查一些日常编码中我们经常犯的错误,比如String,StringBuffer的滥用, 复杂度等 1. 右击代码

2. 如上左侧的小图标表示了级别, 带红x的必须解决, 其他的酌情而定 3. 常见问题

注释要求补充说明TDD。 敏捷开发最佳实践之一: 测试驱动开发。(这个有机会跟大家分享下) 这是单元测试的一个目的。 先写单元测试,用assert来确定方法的返回结果。在开发代码的时候要注意满足这个期望的结果永远是正确的,有利于设计接口,以及保持正确的返回值。

减少不用代码 减少复制粘贴来的大量不用代码。比如BizMessage中所使用到的APIUtils及JSONUtils 这两个类。 其中设计了JSON字符串的处理,但是实际上使用阿里巴巴的FastJSON可以直接满足要求,直接替换之,这样就不用为了这两个类写单元测试了。 在未他们写单元测试的时候才会发现他们的方法有大量没有使用的部分。 并且因为写单元测试进行覆盖率的增长是一件很麻烦的事情,会促进大家尽量写行数少的代码,以减少单元测试代码的工作量。

发现设计问题 在进行单元测试的时候难避免使用mock技术,当你发现一个类不好mock的时候,那么说明该类在设计上存在问题,具有不可测试性,这样的类应该修改。

检查代码逻辑错误 使用覆盖率工具能够检查出大量分支为红色的部分,这个说明我们的单元测试没有测试带该异常分支。同样的,我们的生产环境该分支可能是存在问题的,需要修改。单元测试就是对外API文档 好的单元测试可以看做是一份接入我们API的客户端文档,比如我们写API的使用说明的时候,就可以按照我们单元测试的逻辑来写

,还有不愿面对失败的尴尬。曾经怀有远大理想,拥有完美的憧憬。

一小时写给同组的如何使用工具检测代码质量

相关文章:

你感兴趣的文章:

标签云: