maven项目配置findbugs插件 使用git钩子控制代码的提交

maven项目配置findbugs插件对代码进行静态检测

当发现代码有bug时,就不让用户commit代码到远程仓库里

没有bug时才可以commit到远程仓库中

 

(1)新建maven项目 ,配置findbugs插件

pom.xml


  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.0.0

    cn.demo
    mvn_findbugs
    0.0.1-SNAPSHOT
    jar
    mvn_findbugs
    http://maven.apache.org
  
    
        mvn_findbugs
        
            
                true
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    ${compiler.source}
                    ${compiler.target}
                    ${project.build.sourceEncoding}
                
            
            
            
             
        
            org.codehaus.mojo
            findbugs-maven-plugin
            3.0.4
            
                
                Low
                
                Medium
                true
                true
                
               
             
            
                
                    run-findbugs
                    
                    package
                    
                        check
                    
                
            
        
               
                  
        
    
    
    
    
    
        UTF-8
        1.7
        1.7
        4.12
    

    
        
            junit
            junit
            ${junit.version}
            test
        
            
View Code

ApplicationDemo.java  (示例类)

package cn.demo.mvn_findbugs;

public class ApplicationDemo {
    
    public static void main(String[] args){
        System.out.println("Hello World @!!!");
    }
    
    public void add(){
    
        //a.toString();
        System.out.println("Hello World @!!!---------add ()  method");
    }
}
View Code

ApplicationTest.java   (测试类)

package cn.demo.mvn_findbugs;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class ApplicationTest {
    
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Before()----------before");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("After()----------after");
    }

    @Test
    public void testAdd() {
        ApplicationDemo app = new ApplicationDemo();
        app.add();
        System.out.println("test()----------test---add");
    }

}
View Code

 

 

(2)将项目拷贝,粘贴到桌面 进入项目根目录 右击 git bush here  执行 git init命令,初始化

git  bush here

git init

maven项目配置findbugs插件 使用git钩子控制代码的提交_第1张图片

 

 

(3)使用cd命令打开 .git/hooks文件夹,创建pre-commit文件(没有后缀名的文件)

cd .git/hooks

vi pre-commit

maven项目配置findbugs插件 使用git钩子控制代码的提交_第2张图片

 

 

(4)编辑pre-commit 文件,内容如下  (#所标识的内容表示注释,第一行除外)

#!/bin/sh
#command for test changed code

#echo "WELCOME IN HAHAHA "


#clean the program
#package the program,test the program
mvn clean package

result=$?   #获取当前进程执行结果,mvn clean package命令 会根据maven findbugs的插件的配置执行package的时候 执行 findbugs:findbugs ,如果有bug会返回非0值,如果没有bug会返回0
echo $result


if [ $result -ne 0 ]  #这里通过判断返回值来判断项目是否构建成功  -ne 表示不等于
then
    mvn findbugs:gui    #结果不等于0时,构建失败,打开findbugs的页面,让用户检查错误
    echo "Regretful! BUILD FAILED"
    exit 1      #返回非0结果值,表示提交失败
else
    echo "Configuration! BUILD SUCCESS"
    exit 0    #返回0结果值,表示提交成功  没有出现bug

fi

 

 

(5)将项目添加:  git  add .  

 

 

(6)提交文件 :  git commit -m "there is your descripe message"

执行第六步的时候,会自动调用 pre-commit 脚本,会执行脚本中的内容,根据脚本结果判定是否提交成功

maven项目配置findbugs插件 使用git钩子控制代码的提交_第3张图片

 

中间还有一些输出的信息 省略了…………

从 Fork Value is true  这行开始执行findbugs:findbugs

BUILD SUCCESS :是构建结果  表示构建成功

所以下面的最后一圆圈圈起来的 0 ,就是脚本中的 result值,

 

maven项目配置findbugs插件 使用git钩子控制代码的提交_第4张图片

出现以上这些就表示commit成功了

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------

****************************commit不成功的示例,修改java代码

ApplicationDemo.java (示例类,故意定义无用的变量 出bug)

package cn.demo.mvn_findbugs;

public class ApplicationDemo {
    
    String a = null;
    String b = new String();
    String c = new String();
    
    public static void main(String[] args){
        System.out.println("Hello World123 @@@!!! there is no bugs");
    }
    
    public void add(){
        System.out.println("Hello World @!!!---------add ()  method");
    }
}
View Code

其他的配置都和上面保持一致

执行 git  add .

 

然后执行 git commit -m "描述语句,there are some bugs in this demo"

maven项目配置findbugs插件 使用git钩子控制代码的提交_第5张图片

前面的执行结果没什么差别,当执行findbugs:findbugs命令这里时:

Fork Value is true :开始执行findbugs

4:是出现的bug数目

maven项目配置findbugs插件 使用git钩子控制代码的提交_第6张图片

中间省略一些输出信息…………

构建结果:BUILD FAILURE  表示构建失败

下面的小圈圈标识的数字 1 ,返回非0值,这就是shell脚本中的 result值,,构建失败

maven项目配置findbugs插件 使用git钩子控制代码的提交_第7张图片

然后会执行if判断中的 findbugs:gui命令,自动打开浏览器,进入gui页面

maven项目配置findbugs插件 使用git钩子控制代码的提交_第8张图片

看到 findbugs:gui页面,表示提交失败, 没有代码可以push到远程仓库

这就是findbugs插件控制代码提交的(正常/异常)流程了

 

转载于:https://www.cnblogs.com/DFX339/p/8259295.html

你可能感兴趣的:(git,java,shell)