SVN集成Checkstyle實現代碼自動檢查


日常做開發管理,開發經理或者項目經理最煩惱的是怎麼控制團隊成員的代碼質量,團隊成員背景不同、經驗不同,開發出來的產品也參差不齊,如果只靠代碼走查,工作量太大,效果也不好,如果靠事後檢查,或者出問題了再來追責,效果也不好。因此需要考慮一種事前自動化檢查的方式,這樣就能簡化開發經理或項目經理的工作,讓管理人員能夠抽出身作更多的協調、統籌、高瞻遠矚的事情。


大多數項目使用的版本工具應該是SVN、GIT,其他版本工具例如CVS、TFS,當前的用戶日趨減少。


Checkstyle是很好的代碼規範檢查工具,可以和Eclipse結合,但是如果只是和Eclipse結合做檢查,效果還是不太好,還是不能起到事前自動檢查的效果,所以很自然地想到將SVN和Checkstyle結合,這樣在程序員提交代碼的時候可以自動檢查,做出警告,如存在不規範代碼則禁止提交,這樣就能實現代碼的事前自動化檢查。


以下是根據項目管理過程中的經驗整理出來的代碼自動檢查方法,供參考:


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

wKioL1YIEevCtRYJAADzcL9cGBM202.jpg

2、安裝svnchecker-0.3

   下載後解壓縮,例如解壓縮在D:\downloads\svnchecker-0.3\svnchecker-0.3:

wKioL1YIFgnw2gxmAAEsKqOsLws283.jpg

 

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

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

wKiom1YIFhOhCczcAADZtZhVLUg534.jpg


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

if len(files) == 0:

          return("",0)

wKiom1YIForRsRmAAADH4oxPFzE864.jpg

 

3、在代碼庫下編寫配置文件


wKioL1YIFqDiIm5ZAAI-vUeneMg935.jpg

[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


wKiom1YIFqjTkeCaAACYMrjL1eY564.jpg

5、配置pre-commit腳本


wKioL1YIFsHzJQ4tAARFSzn6NCA689.jpg

 

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、提交代碼時如果代碼不符合規範會顯示異常,修改後可以正常提交。如下

wKiom1YIFszTQOEvAASQ5eA6vWs160.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章