From b728cab15c72d9685dab2b8d45a90fa3015f4d90 Mon Sep 17 00:00:00 2001
From: Jan Vales <jan@jvales.net>
Date: Sat, 26 Sep 2015 18:10:18 +0200
Subject: [PATCH] Added lint, checkstyle and findbugs reporting.

---
 app/build.gradle                    |  43 +++++++++-
 config/checkstyle/checkstyle.xml    | 126 ++++++++++++++++++++++++++++
 config/findbugs/findbugs-filter.xml |  10 +++
 3 files changed, 175 insertions(+), 4 deletions(-)
 create mode 100644 config/checkstyle/checkstyle.xml
 create mode 100644 config/findbugs/findbugs-filter.xml

diff --git a/app/build.gradle b/app/build.gradle
index 2694265..1595260 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,8 @@
 apply plugin: 'com.android.application'
+apply plugin: 'checkstyle'
+apply plugin: 'findbugs'
+
+check.dependsOn 'checkstyle', 'findbugs'
 
 android {
     compileSdkVersion 22
@@ -8,8 +12,8 @@ android {
         applicationId "org.somenet.android.helloworld2"
         minSdkVersion 19
         targetSdkVersion 22
-        versionCode 10
-        versionName "2.1.2"
+        versionCode 12
+        versionName "2.1.3a"
     }
     buildTypes {
         release {
@@ -18,14 +22,45 @@ android {
         }
     }
 
-    if(new File("${System.properties['user.home']}/.android/release.gradle").exists()) {
+    if (new File("${System.properties['user.home']}/.android/release.gradle").exists()) {
         apply from: "${System.properties['user.home']}/.android/release.gradle";
-    }else{
+    } else {
         logger.warn('SigningConfig not found!')
     }
+
+    lintOptions {
+        abortOnError false
+    }
 }
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.android.support:appcompat-v7:22.+'
 }
+
+
+task checkstyle(type: Checkstyle) {
+    source 'src'
+    include '**/*.java'
+    exclude '**/gen/**'
+    classpath = files()
+
+    configFile file("${project.rootDir}/config/checkstyle/checkstyle.xml")
+}
+
+task findbugs(type: FindBugs) {
+    source 'src'
+    include '**/*.java'
+    exclude '**/gen/**'
+    classpath = files()
+
+    excludeFilter file("${project.rootDir}/config/findbugs/findbugs-filter.xml")
+    classes = files("${project.rootDir}/app/build/intermediates/classes/")
+
+    ignoreFailures = true
+
+    reports {
+        xml.enabled = true
+        html.enabled = false
+    }
+}
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
new file mode 100644
index 0000000..05d3c45
--- /dev/null
+++ b/config/checkstyle/checkstyle.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+
+<!--
+    Checkstyle-Configuration: Android checkstyle by Enea
+    Description: none
+--> 
+<module name="Checker"> 
+  <property name="severity" value="warning"></property> 
+  <module name="TreeWalker"> 
+    <property name="tabWidth" value="4"></property> 
+    <module name="JavadocMethod"> 
+      <property name="logLoadErrors" value="true"></property> 
+      <property name="suppressLoadErrors" value="true"></property> 
+    </module> 
+    <module name="JavadocType"></module> 
+    <module name="JavadocVariable"></module> 
+    <module name="JavadocStyle"></module> 
+    <module name="ConstantName"></module> 
+    <module name="LocalFinalVariableName"></module> 
+    <module name="LocalVariableName"></module> 
+    <module name="MemberName"> 
+      <metadata name="net.sf.eclipsecs.core.comment" value="only public starts without m"></metadata> 
+      <property name="applyToProtected" value="false"></property> 
+      <property name="applyToPrivate" value="false"></property> 
+    </module> 
+    <module name="MethodName"></module> 
+    <module name="PackageName"></module> 
+    <module name="ParameterName"></module> 
+    <module name="StaticVariableName"> 
+      <metadata name="net.sf.eclipsecs.core.comment" value="starts with 's'"></metadata> 
+      <property name="format" value="^[s][a-zA-Z0-9]*$"></property> 
+    </module> 
+    <module name="TypeName"></module> 
+    <module name="AvoidStarImport"></module> 
+    <module name="IllegalImport"></module> 
+    <module name="RedundantImport"></module> 
+    <module name="UnusedImports"></module> 
+    <module name="LineLength"> 
+      <property name="severity" value="ignore"></property> 
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+    </module> 
+    <module name="MethodLength"></module> 
+    <module name="ParameterNumber"></module> 
+    <module name="EmptyForIteratorPad"></module> 
+    <module name="MethodParamPad"></module> 
+    <module name="NoWhitespaceAfter"> 
+      <property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"></property> 
+    </module> 
+    <module name="NoWhitespaceBefore"></module> 
+    <module name="OperatorWrap"></module> 
+    <module name="ParenPad"></module> 
+    <module name="TypecastParenPad"></module> 
+    <module name="WhitespaceAfter"></module> 
+    <module name="WhitespaceAround"></module> 
+    <module name="ModifierOrder"></module> 
+    <module name="RedundantModifier"></module> 
+    <module name="AvoidNestedBlocks"></module> 
+    <module name="EmptyBlock"></module> 
+    <module name="LeftCurly"></module> 
+    <module name="NeedBraces"></module> 
+    <module name="RightCurly"></module> 
+    <module name="AvoidInlineConditionals"></module>
+    <module name="EmptyStatement"></module> 
+    <module name="EqualsHashCode"></module> 
+    <module name="HiddenField"></module> 
+    <module name="IllegalInstantiation"></module> 
+    <module name="InnerAssignment"></module> 
+    <module name="MagicNumber"></module> 
+    <module name="MissingSwitchDefault"></module> 
+    <module name="RedundantThrows"> 
+      <property name="logLoadErrors" value="true"></property> 
+      <property name="suppressLoadErrors" value="true"></property> 
+    </module> 
+    <module name="SimplifyBooleanExpression"></module> 
+    <module name="SimplifyBooleanReturn"></module> 
+    <module name="DesignForExtension"> 
+      <property name="severity" value="ignore"></property> 
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+    </module> 
+    <module name="FinalClass"></module> 
+    <module name="HideUtilityClassConstructor"></module> 
+    <module name="InterfaceIsType"></module> 
+    <module name="VisibilityModifier"></module> 
+    <module name="ArrayTypeStyle"></module> 
+    <module name="FinalParameters"> 
+      <property name="severity" value="ignore"></property> 
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+    </module> 
+    <module name="TodoComment"> 
+      <property name="severity" value="ignore"></property> 
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+    </module> 
+    <module name="UpperEll"></module> 
+    <module name="MethodLength"> 
+      <property name="max" value="40"></property> 
+    </module> 
+    <module name="MemberName"> 
+      <metadata name="net.sf.eclipsecs.core.comment" value="non public members should start with m"></metadata> 
+      <property name="applyToPublic" value="false"></property> 
+      <property name="format" value="^[m][a-zA-Z0-9]*$"></property> 
+    </module> 
+    <module name="LineLength"> 
+      <property name="max" value="100"></property> 
+    </module> 
+  </module> 
+  <module name="JavadocPackage"></module> 
+  <module name="NewlineAtEndOfFile"> 
+    <property name="severity" value="ignore"></property> 
+    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata>
+  </module> 
+  <module name="Translation"></module> 
+  <module name="FileTabCharacter"> 
+    <property name="severity" value="ignore"></property> 
+    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+  </module> 
+  <module name="RegexpSingleline"> 
+    <property name="severity" value="ignore"></property> 
+    <property name="format" value="\s+$"></property> 
+    <property name="message" value="Line has trailing spaces."></property> 
+    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"></metadata> 
+  </module> 
+</module>
diff --git a/config/findbugs/findbugs-filter.xml b/config/findbugs/findbugs-filter.xml
new file mode 100644
index 0000000..8b034a5
--- /dev/null
+++ b/config/findbugs/findbugs-filter.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FindBugsFilter>
+    <!-- http://stackoverflow.com/questions/7568579/eclipsefindbugs-exclude-filter-files-doesnt-work -->
+    <Match>
+        <Class name="~.*\.R\$.*"/>
+    </Match>
+    <Match>
+    <Class name="~.*\.Manifest\$.*"/>
+    </Match>
+</FindBugsFilter>
-- 
2.43.0