2013年10月9日
摘要: 下面的类是一个老系统的代码,现在放到sonar上面进行扫描,扫出来的结果发现复杂度超过了30。 代码复杂度是指代码中的分支数量,比如有一个if分支,代码复杂度就加1,如果if中有“||”或者“&&”那么代码复杂度就加2,for和while同理。一般复杂度超过10的类就算是比较复杂的了,而这个类的复杂度竟然达到了30,代码的糟糕程度可见一斑,现在我们就来重构一下这个类的代码。 原始文件在... 阅读全文
posted @ 2013-10-09 07:48 kingzzm 阅读(6318) 评论(1) 推荐(1) 编辑
  2013年9月16日
摘要: 项目使用jenkins做持续集成,ant来构建,发现在跑junit单元测试的时候,如果有test case失败了,ci的状态是黄色的unstable,而不是红色的failed,看起来很不爽。个人觉得build只有两种状态最好,绿色stable和红色failed,黄色让人看起来很困惑,是要fix好呢还是不fix也可以呢? 在网上查到解决方案,就是在ant的build文件里面,加上这样一段: ... 阅读全文
posted @ 2013-09-16 22:48 kingzzm 阅读(1066) 评论(0) 推荐(0) 编辑
摘要: 最近在使用Mockito时遇到了几个比较tricking的问题,在这里记录一下。 1.如果方法的参数或者返回类型是泛型通配符相关的(如,),不管你定义的对象类型是否正确匹配,用any(match)方法时都会编译出错。 解决办法:修改方法的参数类型,去掉泛型通配符。我遇到的相关代码去掉通配符之后也是运行正常的,如果去掉后运行不正常,可能需要寻找其他解决办法,具体没有研究。 2.mock对象的... 阅读全文
posted @ 2013-09-16 22:46 kingzzm 阅读(8786) 评论(0) 推荐(0) 编辑
摘要: 使用ant编译java文件时,如果没有设置debug属性,则不会产生编译信息,ant的默认设置是不打印编译信息。 如果想在编译过程中显示编译信息,需设置debug属性为true,并且设置debugLevel,如下代码所示: ant file - build.xml 1 ant的官方文档: debug Indicates whether source shou... 阅读全文
posted @ 2013-09-16 22:45 kingzzm 阅读(1712) 评论(0) 推荐(0) 编辑
摘要: 最近两天一直在处理ant运行java程序的一个问题,用IDE直接运行类里面的main函数一切正常,但用ant跑该函数就报错误,错误的原因是运行ant任务时调用的是AntClasloader,而IDE里面调用的是jvm里面的classloader。 如何使ant直接调用jvm的classloader呢?尝试过了很多办法都不行,最后在不经意间设置了fork=true这个属性,结果运行正常了。 在... 阅读全文
posted @ 2013-09-16 22:43 kingzzm 阅读(852) 评论(0) 推荐(0) 编辑
摘要: 一般jar包里面是不包含jar文件的,如果自己的类有依赖其他jar包,可以通过ant命令将这些jar包解析,然后和自己的class文件打在一起,命令如下: build.xml 1 2 3 4 5 6 7 8 执行之... 阅读全文
posted @ 2013-09-16 22:40 kingzzm 阅读(1600) 评论(0) 推荐(0) 编辑
摘要: 今天遇到一个问题,需要通过知道的class文件得到该文件所在的jar包,试过很多办法都不行,最后在网上找到了一个解决办法,如下: demo.java 1 2 String path = XXX.class.getProtectionDomain().getCodeSource().getLocation().getFile(); File jarFile = new File(path);... 阅读全文
posted @ 2013-09-16 22:39 kingzzm 阅读(1351) 评论(0) 推荐(0) 编辑
摘要: 最近在用jenkins做自动化web部署,web服务器是tomcat。 遇到了这样一个问题:在服务器上执行tomcat的shutdown.bat命令可以正常关机,但用jenkins执行shutdown.bat命令时却经常关闭不了,从而导致重启时报错。后来想到了杀进程的办法来关闭tomcat服务器,但是要怎样才能查到tomcat进程并杀掉呢? 下面是通过端口号查找进程的命令: 1 net... 阅读全文
posted @ 2013-09-16 22:36 kingzzm 阅读(2254) 评论(0) 推荐(0) 编辑
摘要: 今天在用使用emma的过程中遇到了几个问题,记录一下. 1.跑junit过程中没办法产生coverage data文件,导致最后没办法出emma报告,上官网查了一下原因如下: I have instrumented my classes but am not getting any coverage data… This question has been asked several t... 阅读全文
posted @ 2013-09-16 22:34 kingzzm 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 目前的项目里用junit写单元测试,使用的是junit4,由于大部分开发之前使用的都是junit3,对junit4还不是很熟悉,所以出现了junit3和4混合使用的情况,导致发生了一些问题,这里列举一下。 1.测试类继承了TestCase,方法名是test开头,加Ignore标签,这时Ignore标签失效。错误代码示例: test.java 1 2 3 4 5 6 7 8 public ... 阅读全文
posted @ 2013-09-16 22:32 kingzzm 阅读(222) 评论(0) 推荐(0) 编辑