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

相关文章

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

[职场] 公务员的利弊分析 #知识分享#经验分享#其他

公务员的利弊分析     公务员作为一种稳定的职业选择,一直备受人们的关注。然而,就像任何其他职业一样,公务员职位也有其利与弊。本文将对公务员的利弊进行分析,帮助读者更好地了解这一职业的特点。 利: 1. 稳定的职业:公务员职位通常具有较高的稳定性,一旦进入公务员队伍,往往可以享受到稳定的工作环境和薪资待遇。这对于那些追求稳定的人来说,是一个很大的优势。 2. 薪资福利优厚:公务员的薪资和

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现