linux 建立svn版本庫,並在svn上配置checkstyle作代碼風格檢查

1、建立SVN版本庫java

1.安裝svn服務器       linux

yum install subversion程序員

2.查看版本windows

svnserve --version服務器

3.創建SVN版本庫目錄(即你的SVN服務器裏面的文件存放在哪一個目錄)框架

mkdir -p /data/svnide

4.建立SVN版本庫svn

svnadmin create /data/svn/davesvn測試

5.修改SVN的配置文件相關配置信息,主要是權限這塊idea

(1)svnserve.conf文件修改

vi /data/svn/davesvn/conf/svnserve.conf

將如下幾項放開註釋並修改

[general]

anon-access = none

auth-access = write

password-db = passwd   #還能夠指定到其它目錄都是能夠的

authz-db = authz

realm = My First Repository

 

說明:

       anon-access: 控制非鑑權用戶訪問版本庫的權限。

       auth-access:  控制鑑權用戶訪問版本庫的權限。

       password-db: 指定用戶名口令文件名。

       authz-db:指定權限配置文件名,經過該文件能夠實現以路徑爲基礎的訪問控制。

       realm:指定版本庫的認證域,即在登陸時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件

 

(2)passwd文件修改

vi /data/svn/davesvn/conf/passwd

在文件中最後添加如下2行(配置容許訪問SVN的用戶)

[users]

test = test

 

(3)authz文件修改

vi /data/svn/davesvn/conf/authz

在文件中最後添加如下3行(配置用戶訪問權限相關:根目錄下的全部文件test用戶均可以進行讀寫操做)

admin = test
[/]
@admin = rw

 

6.啓動SVN服務:

svnserve -d -r /data/svn

 

說明:

  -d表示以daemon方式(後臺運行)運行
  -r /data/svn指定根目錄是/data/svn

 

(中止SVN服務:ps -aux |grep svn    kill -9 進程殺掉)

 

7.測試svn版本庫搭建是否成功

(1)windows安裝TortoiseSVN 客戶端,不做過多說明

(2)新建測試目錄svn,進入後右鍵,點checkout

下圖svn地址爲:svn://Linux IP/項目名稱

SVN 服務器的IP地址和版本庫名稱(此文章中此處應爲test/test)

新建個文件svn.txt. 把這個文件上傳到SVN服務器(add)

 

2、配置checkstyle作代碼風格檢查

採用:SVN PreCommitChecks + CheckStyle + svnchecker方案

1.前期準備:插件下載

(1)CheckStyle下載

下載地址:https://download.csdn.net/download/mactty/4392509

checkstyle-5.3-bin.zip解壓後結構以下圖

(2)svnchecker下載

下載地址:https://sourceforge.net/projects/svnchecker/files/svnchecker/0.3/

svnchecker-0.3.tar.gz解壓後目錄以下:

2.將checkstyle-5.3-bin.zip,svnchecker-0.3.tar.gz上傳至linux虛擬機,並解壓

3.在svn代碼庫的hooks目錄下建立/修改配置文件

(1)pre-commit修改

1)進入svn版本庫的hooks目錄

cd /data/svn/davesvn/hooks

2)將pre-commit.tmpl重命名爲pre-commit

mv pre-commit.tmpl pre-commit

3)將下圖中的1註釋,2添加

/data/svntools/svnchecker-0.3/Main.py PreCommit "$REPOS" "$TXN" || exit 1

(說明:/data/svntools/svnchecker-0.3爲svnchecker插件目錄)

(2)新增idea_checks.xml文件(此文件爲checkstyle代碼檢測規則文件,可自定義)

touch idea_checks.xml

 文件內容以下:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
    <!-- 檢查文件是否以一個空行結束 -->
    <module name="NewlineAtEndOfFile"/>

    <module name="TreeWalker">
        <!-- 禁止使用System.out.println -->
        <module name="Regexp">
            <property name="format" value="System\.out\.println"/>
            <property name="illegalPattern" value="true"/>
        </module>
    </module>
</module>

(3)新增svncheckerconfig.ini文件

touch svncheckerconfig.ini

文件內容以下:

[Default]

 

#This property tells Subversionchecker about all checks
#(UnitTests, AccessRights, XMLValidator etc) it should execute.
#Separated with comma (",")
Main.PreCommitChecks=Checkstyle

#Path of java executable to run Checkstyle command
Checkstyle.Java=/usr/bin/java

#Classpath for executing Checkstyle rules
Checkstyle.Classpath=/data/svntools/checkstyle-5.3/checkstyle-5.3-all.jar

#Configuration file for Checkstyle to run its rules.
Checkstyle.ConfigFile=/data/svntools/checkstyle-5.3/idea_checks.xml

#In case of failures, where should Subversionchecker redirect the errors
Checkstyle.FailureHandlers=Console

說明:

  Main.PreCommitChecks:檢查器爲Checkstyle

  Checkstyle.Java:Checkstyle執行的java命令路徑爲/usr/bin/java

  Checkstyle.Classpath:要加載/data/svntools/checkstyle-5.3/checkstyle-5.3-all.jar

  Checkstyle.ConfigFile:檢查規則文件路徑爲/data/svntools/checkstyle-5.3/idea_checks.xml

  Checkstyle.FailureHandlers:失敗時將把信息輸出到標準輸出

 

4.校驗

當有代碼提交時,此檢查框架將運行,保證違反規則的代碼被拒絕。程序員的將看到相似以下的信息

 5.提交非java代碼報錯問題:設置只對java代碼進行校驗

說明:在Checkstyle.py文件中command = "%s -classpath %s com.puppycrawl.tools.checkstyle.Main -c %s " % (java, classpath, config)這個命令執行時須要在後面加上待檢查文件,可是非java文件在transaction.getFiles(check, ignore)方法中獲得的爲空,可是後續並無作驗證就直接執行Process.execute(command + " ".join(files))命令,故報錯。

方法:在command = "%s -classpath %s com.puppycrawl.tools.checkstyle.Main -c %s " % (java, classpath, config)語句以後加上    if cmp(" ".join(files),"") == 0:        return ("", 0)便可;

相關文章
相關標籤/搜索