日常做開發管理,開發經理或者項目經理最煩惱的是怎麼控制團隊成員的代碼質量,團隊成員背景不同、經驗不同,開發出來的產品也參差不齊,如果只靠代碼走查,工作量太大,效果也不好,如果靠事後檢查,或者出問題了再來追責,效果也不好。因此需要考慮一種事前自動化檢查的方式,這樣就能簡化開發經理或項目經理的工作,讓管理人員能夠抽出身作更多的協調、統籌、高瞻遠矚的事情。
大多數項目使用的版本工具應該是SVN、GIT,其他版本工具例如CVS、TFS,當前的用戶日趨減少。
Checkstyle是很好的代碼規範檢查工具,可以和Eclipse結合,但是如果只是和Eclipse結合做檢查,效果還是不太好,還是不能起到事前自動檢查的效果,所以很自然地想到將SVN和Checkstyle結合,這樣在程序員提交代碼的時候可以自動檢查,做出警告,如存在不規範代碼則禁止提交,這樣就能實現代碼的事前自動化檢查。
以下是根據項目管理過程中的經驗整理出來的代碼自動檢查方法,供參考:
1、安裝Python2.4(最新的python爲2.7或3.1版本),例如安裝在c:\python24路徑下
2、安裝svnchecker-0.3
下載後解壓縮,例如解壓縮在D:\downloads\svnchecker-0.3\svnchecker-0.3:
修改modules\transaction.py文件,增加命令行:
command &command.replace(‘svnlook’,’%svnlook%’)
修改checks\check.py文件,增加命令行
if len(files) == 0:
return("",0)
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:
5、配置pre-commit腳本
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、提交代碼時如果代碼不符合規範會顯示異常,修改後可以正常提交。如下