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

本文主要是介绍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)  收藏  举报
本文章已收录于: 
 Android知识库
  分类:

转载请注意出处: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. }  

这篇关于Jenkins+Gradle+checkstyle对Android工程源码进行静态代码分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075005

相关文章

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Gradle在国内配置镜像加速的实现步骤

《Gradle在国内配置镜像加速的实现步骤》在国内使用Gradle构建项目时,最大的痛点就是依赖下载贼慢,甚至卡死,下面教你如何配置国内镜像加速Gradle下载依赖,主要是通过改写repositori... 目录引言一、修改 build.gradle 或 settings.gradle 的 reposito