日常做开发管理,开发经理或者项目经理最烦恼的是怎么控制团队成员的代码质量,团队成员背景不同、经验不同,开发出来的产品也参差不齐,如果只靠代码走查,工作量太大,效果也不好,如果靠事后检查,或者出问题了再来追责,效果也不好。因此需要考虑一种事前自动化检查的方式,这样就能简化开发经理或项目经理的工作,让管理人员能够抽出身作更多的协调、统筹、高瞻远瞩的事情。


大多数项目使用的版本工具应该是SVN、GIT,其他版本工具例如CVS、TFS,当前的用户日趋减少。


Checkstyle是很好的代码规范检查工具,可以和Eclipse结合,但是如果只是和Eclipse结合做检查,效果还是不太好,还是不能起到事前自动检查的效果,所以很自然地想到将SVN和Checkstyle结合,这样在程序员提交代码的时候可以自动检查,做出警告,如存在不规范代码则禁止提交,这样就能实现代码的事前自动化检查。


以下是根据项目管理过程中的经验整理出来的代码自动检查方法,供参考:


1、安装Python2.4(最新的python为2.7或3.1版本),例如安装在c:\python24路径下

SVN集成Checkstyle实现代码自动检查_第1张图片

2、安装svnchecker-0.3

   下载后解压缩,例如解压缩在D:\downloads\svnchecker-0.3\svnchecker-0.3:

SVN集成Checkstyle实现代码自动检查_第2张图片

 

修改modules\transaction.py文件,增加命令行:

 command &command.replace(‘svnlook’,’%svnlook%’)

wKiom1YIFhOhCczcAADZtZhVLUg534.jpg


修改checks\check.py文件,增加命令行

if len(files) == 0:

          return("",0)

wKiom1YIForRsRmAAADH4oxPFzE864.jpg

 

3、在代码库下编写配置文件


SVN集成Checkstyle实现代码自动检查_第3张图片

[Default]

Main.PreCommitChecks=Checkstyle

 

#Path of java executable to run Checkstyle command

Checkstyle.Java=java

 

#Classpath for executing Checkstyle rules

Checkstyle.Classpath=D:\checkstyle\checkstyle-5.6-all.jar

 

#Configuration file for Checkstyle to run its rules.

Checkstyle.ConfigFile=D:\checkstyle\checkstyle.xml

 

#In case of failures, where should Subversionchecker redirectthe errors

Checkstyle.FailureHandlers=Console

 

4、编写代码检查脚本,例如d:\checksytle\checkstyle.xml


SVN集成Checkstyle实现代码自动检查_第4张图片

5、配置pre-commit脚本


SVN集成Checkstyle实现代码自动检查_第5张图片

 

set python="C:\Python24\python.exe"

setsvnchecker="D:\downloads\svnchecker-0.3\svnchecker-0.3"

set svnlook="D:\Program Files\VisualSVNServer\bin\svnlook.exe"

 

setlocal

set REPOS=%1

set TXN=%2

 

rem checkstyle hooks

%python% %svnchecker%\Main.py PreCommit %REPOS%%TXN% || exit 1

 

rem Make sure that the log message containssome text.

set SVNLOOK="D:\Program Files\VisualSVNServer\bin\svnlook.exe"

%SVNLOOK% log -t "%TXN%""%REPOS%" | findstr "....." > null

 

if %errorlevel% gtr 0 goto err

exit 0

:err

echo 字符串长度不能小于5,不允许提交 1>&2

echo "%REPOS%" -t "%TXN%"1>&2

 

exit 2

 

6、提交代码时如果代码不符合规范会显示异常,修改后可以正常提交。如下

SVN集成Checkstyle实现代码自动检查_第6张图片