妳的想法存在壹個誤區:
pre-commit hook是在svn服務器上觸發的,而svn服務器中不是直接存儲源代碼文本,而是以svn自己的格式來存儲(版本差異增量存儲等)。所以checkstyle是檢查不了的。實際上,妳想做的事,應該是由自動構建工具來完成(svn是版本管理,不是構建工具)。
向妳推薦壹款開源的自動構建工具:jenkins,這個工具很方便。
另外,妳所說的checkstyle檢查,其實也不需要用python,直接用shell就可以做到的。
比如:在自動構建服務器上,做壹個類似這樣的腳本:
#!/bin/sh#?-*-?coding:?utf-8?-*-
#?-*-?file:?checkstyle.sh?-*-
java?-jar?${CHECKSTYLE_HOME}/checkstyle-6.1-all.jar?\
-c?${SCRIPT_HOME}/checkstyle.xml?\
-r?${PROJECT_HOME}/myproject/modules?\
-r?${PROJECT_HOME}/myproject/resources?\
-f?xml?\
-o?${REPORT_DIR}/checkstyle-report.xml?||?echo?"checkstyle?find?$?bugs."
其中,checkstyle-6.1-all.jar是checkstyle 6.1的jar包;checkstyle.xml是為項目配置好的checkstyle規則;myproject是要檢查的工程;checkstyle-report.xml是檢查結果報告(xml格式)。
如果服務器是windows環境,只需要把以上內容改成.bat或.cmd批處理腳本即可。