﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-OOPAA-随笔分类-设计开发</title><link>http://www.blogjava.net/mingj/category/39623.html</link><description>Focusing on OO, Patterns, Architecture, and Agile</description><language>zh-cn</language><lastBuildDate>Wed, 22 Dec 2010 15:01:50 GMT</lastBuildDate><pubDate>Wed, 22 Dec 2010 15:01:50 GMT</pubDate><ttl>60</ttl><item><title>持续检查之sonar初体验</title><link>http://www.blogjava.net/mingj/archive/2010/12/22/341350.html</link><dc:creator>mingj</dc:creator><author>mingj</author><pubDate>Wed, 22 Dec 2010 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/mingj/archive/2010/12/22/341350.html</guid><wfw:comment>http://www.blogjava.net/mingj/comments/341350.html</wfw:comment><comments>http://www.blogjava.net/mingj/archive/2010/12/22/341350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mingj/comments/commentRss/341350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mingj/services/trackbacks/341350.html</trackback:ping><description><![CDATA[<p>安装、启动Sonar：</p>
<p>Sonar的安装很容易，按照Sonar官方主页的安装指南解压缩即可。</p>
<p>Sonar默认使用derby作为数据库，你只需要在sonar.properties文件中去掉对derby数据库属性的注释，然后启动Apache derby数据库。</p>
<p>按照文档介绍，启动Sonar，默认的主页地址是http://localhost:9000，登录用户名和密码是sonar/sonar。</p>
<p>使用Sonar检查代码：</p>
<p>要使用Sonar检查代码，也很容易。</p>
<p>如果待检查项目是maven项目，则只需要安装sonar maven
plugin即可；如果是非maven项目，则需要在项目根目录下创建pom.xml，内容按照文档配置。具体参
见：http://docs.codehaus.org/display/SONAR/Analyzing+Java+Projects</p>
<p>现在只需要项目根目录下，运行mvn sonar:sonar就可以运行sonar maven plugin来检查项目中的代码了。</p>
<p>注意：</p>
<p>如果项目源文件使用的编码与系统的默认字符集不同，比如操作系统是GBK，而源文件编码为UTF-8。为了能够正常地检查代码，需要在pom.xml的properties元素下增加一项配置如:</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">project</span><span style="color: #ff0000;">.build.sourceEncoding</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">UTF-8</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">project.build.sourceEncoding</span><span style="color: #0000ff;">&gt;</span></div>
<p>否则，sonar在生成checkstyle.xml的时候，不会将正确的编码传进去，导致checkstyle在做AST分析的过程中使用了错误
的字符集，从而提示字符错误：&#8220;expecting 'xxx', but got '&lt;EOF&gt;'&#8221;。即使是在调用mvn
sonar:sonar的时候，增加参数如：</p>
<pre>mvn -Dfile.encoding=UTF-8 -DsourceEncoding=UTF-8 sonar:sonar<br />
</pre>
<p>也无法生效，虽然通过-e开关是可以看到系统的默认字符集已经改成了UTF-8。</p>
<p>好了，sonar已经安装完毕，而且也顺利地完成了代码的分析和检查。</p>
<p>下一步，我们就可以分析sonar输出的报告，判断代码的质量，制定改善的措施了。</p>
<img src ="http://www.blogjava.net/mingj/aggbug/341350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mingj/" target="_blank">mingj</a> 2010-12-22 22:55 <a href="http://www.blogjava.net/mingj/archive/2010/12/22/341350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次 Refactoring to Functionality 的实践</title><link>http://www.blogjava.net/mingj/archive/2009/05/16/270988.html</link><dc:creator>mingj</dc:creator><author>mingj</author><pubDate>Sat, 16 May 2009 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/mingj/archive/2009/05/16/270988.html</guid><wfw:comment>http://www.blogjava.net/mingj/comments/270988.html</wfw:comment><comments>http://www.blogjava.net/mingj/archive/2009/05/16/270988.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/mingj/comments/commentRss/270988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mingj/services/trackbacks/270988.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 对于软件开发，多少代工程师梦想能像堆积木一样堆出满足功能需求的软件。Brooks在No Silver Bullet一文中提到解决软件开发过程中复杂性的一种可能方案就是成熟的组件市场，人们可以购买需要的组件而不是再自行开发。但对于开发工作，有没有一种更高层面的模式，可以把原来混乱无序的开发过程分解成一段段明确定义的步骤？比如说，开发人员接到一个任务，他可以这样跟他的同伴解释他的计划：“我先要抽取类（extract class），然后移动方法（move method），就完成了。”这正是本文试图讨论的主题：通过一系列明确定义的重构步骤，以达到实现系统功能的目的。我们可以进一步假想，重构是否就是开发人员开发软件的领域专属语言呢（refactoring as DSLs to developers' development）&nbsp;&nbsp;<a href='http://www.blogjava.net/mingj/archive/2009/05/16/270988.html'>阅读全文</a><img src ="http://www.blogjava.net/mingj/aggbug/270988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mingj/" target="_blank">mingj</a> 2009-05-16 15:15 <a href="http://www.blogjava.net/mingj/archive/2009/05/16/270988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>