Jenkins+Gradle+checkstyle对Android工程源码进行静态代码分析

 

Jenkins+Gradle+checkstyle对Android工程源码进行静态代码分


http://blog.csdn.net/it_talk/article/details/50267573
http://blog.csdn.net/it_talk/article/details/50267573
http://blog.csdn.net/it_talk/article/details/50267573
http://blog.csdn.net/it_talk/article/details/50267573


标签: gradleJenkinscheckstyle
  1700人阅读  评论(0)  收藏  举报
本文章已收录于: 
  分类:

转载请注意出处:http://blog.csdn.NET/hwhua1986/article/details/49278773


环境说明

Gradle 2.6.

OS:windows server 2008

Jenkins 1.620

checkstyle 6.11.6


前提:

Jenkins需要提前安装好Checkstyle Plug-in插件



一、Jenkins配置如下:

1、  新建job

2、  配置svn

3、  配置构建操作

备注:

Tasks指的是build.gradle里面的task名称

配置info参数是用来看调试日志,也可以配置debug级别。主要用来查看构建失败的原因。

4、  配置分析报告


二、gradle.build的配置如下

 

1、添加checkstyle的依赖

buildscript {

   repositories {

               mavenCentral()

    }

   dependencies {

       classpath 'com.Android.tools.build:gradle:1.0.0+'

              //classpath  'io.fabric.tools:gradle:1.+'

              //classpath  'com.google.code.findbugs:findbugs:3.0.1'

              //classpath  'com.puppycrawl.tools:checkstyle:6.11.2'

              //classpath  'net.sourceforge.pmd:pmd:5.4.0'

    }

}

 

备注:版本包可以通过中央仓库(http://mvnrepository.com/artifact/)查看,如图

 

版本列表:

 

2、增加checkstyle的task

 

apply plugin: "checkstyle"

 

repositories {

  mavenCentral()

}

task checkstyle(type: Checkstyle) {

  //toolVersion = "2.0.1"

  ignoreFailures = true

       //config= files("$rootProject.projectDir/config/checkstyle/checkstyle.xml")

       source= fileTree('build/intermediates/classes/debug/com/sn/')

       classpath= files()

       reports{

   xml {

     destination "build/checkstyle-result.xml"

    }

  }

}

备注:其中检查规则文件checkstyle.xml需要创建,步骤如下

 

Xml内容代码:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0"encoding="UTF-8"?>  
  2. <!DOCTYPE module PUBLIC  
  3.    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"  
  4.     "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">  
  5. <module name="Checker">  
  6. <modulenamemodulename="FileTabCharacter"/>  
  7.   <module name="TreeWalker">  
  8.    <module name="UnusedImports"/>  
  9.  </module>  
  10. </module>  


 

三、构建结果查看




四、build.gradle的所有代码如下

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. buildscript {  
  2.     repositories {  
  3.          mavenCentral()  
  4.     }  
  5.     dependencies {  
  6.         classpath  'com.android.tools.build:gradle:1.0.0+'  
  7.         //classpath  'io.fabric.tools:gradle:1.+'  
  8.         //classpath  'com.google.code.findbugs:findbugs:3.0.1'  
  9.         //classpath  'com.puppycrawl.tools:checkstyle:6.11.2'  
  10.         //classpath  'net.sourceforge.pmd:pmd:5.4.0'  
  11.     }  
  12. }  
  13. apply plugin: 'android'  
  14.   
  15. dependencies {  
  16.     compile fileTree(dir: 'libs', include: '*.jar')  
  17. }  
  18.   
  19. android {  
  20.     compileSdkVersion 20  
  21.     buildToolsVersion "20.0.0"  
  22.   
  23.     //忽略编码错误  
  24.     lintOptions {    
  25.          abortOnError false    
  26.     }    
  27.   
  28.     //设置版本号  
  29.     defaultConfig {  
  30.         versionCode 1  
  31.         versionName "1.0"  
  32.         minSdkVersion 8  
  33.         targetSdkVersion 18  
  34.     }  
  35.       
  36.     //引用so包  
  37.     sourceSets{  
  38.         main{  
  39.             jniLibs.srcDir(['libs'])  
  40.             jniLibs.srcDir(['obj'])  
  41.         }  
  42.     }  
  43.   
  44.     //设置编译编码  
  45.     tasks.withType(JavaCompile) {   
  46.         options.encoding = 'UTF-8'   
  47.     }  
  48.       
  49.     //autograph  
  50.     signingConfigs{  
  51.         //keystore info  
  52.         myConfig {  
  53.             storeFile file("bgkey")  
  54.             storePassword "sinocare@ydyl"  
  55.             keyAlias "com.sn.bloodglucose"  
  56.             keyPassword "sinocare@ydyl"  
  57.         }  
  58.     }  
  59.   
  60.   //混淆  
  61.     buildTypes{    
  62.         release{    
  63.             signingConfig signingConfigs.myConfig    
  64.             minifyEnabled false    
  65.         }    
  66.     }    
  67.   
  68.     sourceSets {  
  69.         main {  
  70.             manifest.srcFile 'AndroidManifest.xml'  
  71.             java.srcDirs = ['src']  
  72.             resources.srcDirs = ['src']  
  73.             aidl.srcDirs = ['src']  
  74.             renderscript.srcDirs = ['src']  
  75.             res.srcDirs = ['res']  
  76.             assets.srcDirs = ['assets']  
  77.         }  
  78.   
  79.         // Move the tests to tests/java, tests/res, etc...  
  80.         instrumentTest.setRoot('tests')  
  81.   
  82.         // Move the build types to build-types/<type>  
  83.         // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...  
  84.         // This moves them out of them default location under src/<type>/... which would  
  85.         // conflict with src/ being used by the main source set.  
  86.         // Adding new build types or product flavors should be accompanied  
  87.         // by a similar customization.  
  88.         debug.setRoot('build-types/debug')  
  89.         release.setRoot('build-types/release')  
  90.     }  
  91. }  
  92.   
  93. apply plugin: "findbugs"  
  94.   
  95. repositories {  
  96.   mavenCentral()  
  97. }  
  98.   
  99. task findbugs(type: FindBugs) {  
  100.    //toolVersion = "2.0.1"  
  101.     ignoreFailures = true  
  102.     effort = "max"  
  103.     reportLevel = "low"  
  104.     classes = files("$project.buildDir/intermediates/classes")  
  105.     source = fileTree('build/intermediates/classes/debug/com/sn/')  
  106.     classpath = files()  
  107.     reports {  
  108.     xml {  
  109.       destination "build/findbugs.xml"  
  110.     }  
  111.   }  
  112. }  
  113.   
  114.   
  115. apply plugin: "checkstyle"  
  116.   
  117. repositories {  
  118.   mavenCentral()  
  119. }  
  120. task checkstyle(type: Checkstyle) {  
  121.    ignoreFailures = true  
  122.     //config = files("build/config/checkstyle/checkstyle.xml")  
  123.     source = fileTree('build/intermediates/classes/debug/com/sn/')  
  124.     classpath = files()  
  125.     reports {  
  126.     xml {  
  127.       destination "build/checkstyle-result.xml"  
  128.     }  
  129.   }  
  130. }  
  131.   
  132.   
  133. apply plugin: "pmd"  
  134.   
  135. repositories {  
  136.   mavenCentral()  
  137. }  
  138. task pmd(type: Pmd) {  
  139.     ignoreFailures = true  
  140.     source = fileTree('src/com/sn/')  
  141.     //ruleSetConfig = resources.file("${project.rootDir}/config/pmd/PmdRuleSets.xml")  
  142.     //ruleSetFiles = files("config/pmd/PmdRuleSets.xml")  
  143.     ruleSetFiles = files("${project.rootDir}/config/pmd/PmdRuleSets.xml")  
  144.     ruleSets = ["java-android"]  
  145.     reports {  
  146.     xml {  
  147.       destination "build/pmd.xml"  
  148.     }  
  149.   }  
  150. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值