add checkstyle and pmd

This commit is contained in:
Phillip Thelen 2017-02-02 12:24:31 +01:00
parent 1c85fbfa43
commit 0dc56f0fed
4 changed files with 416 additions and 2 deletions

View file

@ -2,19 +2,26 @@ apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'io.fabric'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'com.chaitanyapramod.findbugs-android'
apply plugin: 'com.noveogroup.android.check'
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
jcenter()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.21.5'
classpath 'me.tatarka:gradle-retrolambda:3.3.1'
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath('com.noveogroup.android:check:1.2.3') {
exclude module: 'checkstyle'
exclude module: 'pmd-java'
}
classpath 'com.puppycrawl.tools:checkstyle:7.5'
classpath 'net.sourceforge.pmd:pmd-java:5.5.3'
}
}
@ -277,6 +284,8 @@ tasks.whenTaskAdded { task ->
}
}
check { findbugs { skip true } }
apply plugin: 'com.getkeepsafe.dexcount'
apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'

View file

@ -0,0 +1,268 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<!--
Checkstyle Configuration
Severity: EASY
-->
<module name="Checker">
<!-- Checks whether files end with a new line. -->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#NewlineAtEndOfFile -->
<module name="NewlineAtEndOfFile">
<property name="severity" value="ignore" />
</module>
<!-- Checks that property files contain the same keys. -->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#Translation -->
<module name="Translation" />
<!-- Checks for Size Violations. -->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
<module name="FileLength" />
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
</module>
<!-- Miscellaneous other checks. -->
<!-- See http://checkstyle.sourceforge.net/config_misc.html -->
<module name="RegexpSingleline">
<property name="format" value="\s+$" />
<property name="minimum" value="0" />
<property name="maximum" value="0" />
<property name="message" value="Line has trailing spaces." />
<property name="severity" value="info" />
</module>
<module name="TreeWalker">
<!-- http://checkstyle.sourceforge.net/config_annotation.html -->
<module name="AnnotationLocation" />
<module name="AnonInnerLength">
<property name="max" value="60"/>
</module>
<!-- Checks for Javadoc comments. -->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
<module name="JavadocMethod">
<property name="scope" value="package" />
<property name="allowMissingParamTags" value="true" />
<property name="allowMissingThrowsTags" value="true" />
<property name="allowMissingReturnTag" value="true" />
<property name="allowThrowsTagsForSubclasses" value="true" />
<property name="allowUndeclaredRTE" value="true" />
<property name="allowMissingPropertyJavadoc" value="true" />
<property name="severity" value="ignore" />
</module>
<module name="JavadocType">
<property name="scope" value="package" />
<property name="severity" value="ignore" />
</module>
<module name="JavadocVariable">
<property name="scope" value="package" />
<property name="severity" value="ignore" />
</module>
<module name="JavadocStyle">
<property name="checkEmptyJavadoc" value="true" />
<property name="severity" value="ignore" />
</module>
<!-- Checks for Naming Conventions. -->
<!-- See http://checkstyle.sourceforge.net/config_naming.html -->
<module name="ConstantName" />
<module name="LocalFinalVariableName" />
<module name="LocalVariableName">
<property name="allowOneCharVarInForLoop" value="true"/>
</module>
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9][a-zA-Z0-9]*$"/>
</module>
<module name="MethodName" />
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9][a-zA-Z0-9]*$"/>
<property name="accessModifiers" value="public"/>
</module>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName" />
<!-- Checks for imports -->
<!-- See http://checkstyle.sourceforge.net/config_import.html -->
<module name="AvoidStarImport" />
<module name="IllegalImport" />
<module name="RedundantImport" />
<module name="UnusedImports" />
<!-- Checks for Size Violations. -->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
<module name="LineLength">
<property name="severity" value="ignore" />
</module>
<module name="MethodLength" />
<module name="ParameterNumber" />
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
<module name="EmptyForIteratorPad" />
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<module name="GenericWhitespace" />
<module name="MethodParamPad" />
<module name="NoLineWrap"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="ARRAY_INIT"/>
<property name="tokens" value="BNOT"/>
<property name="tokens" value="DEC"/>
<property name="tokens" value="DOT"/>
<property name="tokens" value="INC"/>
<property name="tokens" value="LNOT"/>
<property name="tokens" value="UNARY_MINUS"/>
<property name="tokens" value="UNARY_PLUS"/>
<property name="tokens" value="ARRAY_DECLARATOR"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="SeparatorWrap">
<property name="tokens" value="COMMA"/>
<property name="option" value="eol"/>
</module>
<module name="SeparatorWrap">
<property name="tokens" value="DOT"/>
<property name="option" value="nl"/>
</module>
<module name="SingleSpaceSeparator"/>
<module name="OperatorWrap" />
<module name="ParenPad" />
<module name="TypecastParenPad" />
<module name="WhitespaceAfter" />
<module name="WhitespaceAround">
<property name="allowEmptyLambdas" value="true" />
</module>
<!-- Modifier Checks -->
<!-- See http://checkstyle.sourceforge.net/config_modifiers.html -->
<module name="ModifierOrder">
<property name="severity" value="ignore" />
</module>
<module name="RedundantModifier">
<property name="severity" value="ignore" />
</module>
<!-- Checks for blocks. You know, those {}'s -->
<!-- See http://checkstyle.sourceforge.net/config_blocks.html -->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true" />
</module>
<module name="EmptyBlock">
<property name="option" value="text" />
</module>
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected|ignore"/>
</module>
<module name="LeftCurly" />
<module name="NeedBraces" />
<module name="RightCurly" />
<!-- Checks for common coding problems -->
<!-- See http://checkstyle.sourceforge.net/config_coding.html -->
<module name="ArrayTrailingComma"/>
<module name="CovariantEquals"/>
<module name="DeclarationOrder"/>
<module name="DefaultComesLast"/>
<module name="EmptyStatement" />
<module name="EqualsAvoidNull"/>
<module name="EqualsHashCode" />
<module name="FallThrough"/>
<module name="HiddenField">
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
</module>
<module name="IllegalCatch"/>
<module name="IllegalInstantiation">
<property name="classes" value="java.lang.Boolean"/>
</module>
<module name="IllegalThrows"/>
<module name="IllegalType"/>
<module name="InnerAssignment" />
<module name="MagicNumber">
<property name="severity" value="ignore" />
<property name="ignoreNumbers" value="-1, 0, 1, 2, 3, 4, 5, 8, 10, 12, 16, 24, 30, 32, 60, 64, 100, 120, 128, 180, 256, 360, 1000" />
</module>
<module name="MissingSwitchDefault" />
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="2"/>
<property name="ignoreStringsRegexp" value='^(("")|(", "))$'/>
</module>
<module name="MultipleVariableDeclarations"/>
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<module name="NoClone"/>
<module name="NoFinalizer"/>
<module name="OneStatementPerLine"/>
<module name="PackageDeclaration"/>
<module name="ParameterAssignment"/>
<module name="RequireThis"/>
<module name="SimplifyBooleanExpression" />
<module name="SimplifyBooleanReturn" />
<module name="StringLiteralEquality"/>
<!-- Checks for class design -->
<!-- See http://checkstyle.sourceforge.net/config_design.html -->
<module name="HideUtilityClassConstructor" />
<module name="InnerTypeLast"/>
<module name="InterfaceIsType" />
<module name="OneTopLevelClass"/>
<module name="VisibilityModifier">
<property name="severity" value="ignore" />
</module>
<!-- Miscellaneous other checks. -->
<!-- See http://checkstyle.sourceforge.net/config_misc.html -->
<module name="ArrayTypeStyle" />
<module name="CommentsIndentation"/>
<module name="Indentation"/>
<module name="OuterTypeFilename"/>
<module name="TodoComment">
<property name="format" value="(?i)\s+TODO\s+" />
<property name="severity" value="info" />
</module>
<module name="TodoComment">
<property name="format" value="(?i)\s+CR\s+" />
<property name="severity" value="info" />
</module>
<module name="UpperEll" />
</module>
<!-- Enable suppression comments -->
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE IGNORE\s+(\S+)" />
<property name="onCommentFormat" value="CHECKSTYLE END IGNORE\s+(\S+)" />
<property name="checkFormat" value="$1" />
</module>
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value="SUPPRESS CHECKSTYLE (\w+)" />
<property name="checkFormat" value="$1" />
<property name="influenceFormat" value="1" />
</module>
</module>

138
Habitica/config/pmd.xml Normal file
View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
PMD Configuration
Severity: EASY
-->
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ruleset"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>POM rule set file</description>
<rule ref="rulesets/java/android.xml" />
<rule ref="rulesets/java/basic.xml">
<exclude name="CollapsibleIfStatements" />
<exclude name="AvoidUsingHardCodedIP" />
</rule>
<rule ref="rulesets/java/braces.xml">
</rule>
<rule ref="rulesets/java/clone.xml" />
<rule ref="rulesets/java/codesize.xml">
<exclude name="StdCyclomaticComplexity" />
<exclude name="ModifiedCyclomaticComplexity" />
</rule>
<rule ref="rulesets/java/codesize.xml/CyclomaticComplexity">
<properties>
<property name="reportLevel" value="20" />
</properties>
</rule>
<rule ref="rulesets/java/codesize.xml/TooManyMethods">
<properties>
<property name="maxmethods" value="25" />
</properties>
</rule>
<rule ref="rulesets/java/comments.xml">
<exclude name="CommentRequired" />
<exclude name="CommentSize" />
<exclude name="CommentDefaultAccessModifier" />
</rule>
<rule ref="rulesets/java/controversial.xml">
<!-- while ((x = update()) != null) { process(x); } -->
<exclude name="AtLeastOneConstructor" />
<exclude name="AvoidLiteralsInIfCondition" />
<exclude name="AvoidPrefixingMethodParameters" />
<exclude name="DataflowAnomalyAnalysis" />
<exclude name="NullAssignment" />
<exclude name="OnlyOneReturn" />
<exclude name="DefaultPackage" />
<exclude name="UseConcurrentHashMap" />
<exclude name="UseObjectForClearerAPI" />
</rule>
<rule ref="rulesets/java/coupling.xml">
<exclude name="LooseCoupling" />
<exclude name="ExcessiveImports" />
<exclude name="LawOfDemeter" />
<exclude name="LoosePackageCoupling" />
</rule>
<rule ref="rulesets/java/design.xml">
<!-- if (x != y) { short code block } else { long code block } -->
<exclude name="ConfusingTernary" />
<exclude name="SwitchStmtsShouldHaveDefault" />
<!-- Android listeners contain a lot of such switch statements -->
<exclude name="TooFewBranchesForASwitchStatement" />
<exclude name="ImmutableField" />
<exclude name="GodClass" />
<exclude name="SingularField" />
<exclude name="UncommentedEmptyMethodBody" />
<exclude name="EmptyMethodInAbstractClassShouldBeAbstract" />
</rule>
<rule ref="rulesets/java/empty.xml" />
<rule ref="rulesets/java/finalizers.xml" />
<rule ref="rulesets/java/imports.xml" />
<rule ref="rulesets/java/junit.xml">
<exclude name="JUnitTestsShouldIncludeAssert" />
<exclude name="JUnitAssertionsShouldIncludeMessage" />
<exclude name="JUnitTestContainsTooManyAsserts" />
</rule>
<rule ref="rulesets/java/logging-jakarta-commons.xml">
<exclude name="GuardLogStatement" />
</rule>
<rule ref="rulesets/java/logging-java.xml">
<exclude name="GuardLogStatementJavaUtil" />
</rule>
<rule ref="rulesets/java/migrating.xml" />
<rule ref="rulesets/java/naming.xml">
<exclude name="AbstractNaming" />
<exclude name="AvoidFieldNameMatchingMethodName" />
<exclude name="LongVariable" />
<exclude name="ShortClassName" />
<exclude name="SuspiciousConstantFieldName" />
<exclude name="ShortVariable" />
<exclude name="VariableNamingConventions" />
</rule>
<rule ref="rulesets/java/optimizations.xml">
<exclude name="AvoidInstantiatingObjectsInLoops" />
<exclude name="LocalVariableCouldBeFinal" />
<exclude name="MethodArgumentCouldBeFinal" />
<exclude name="RedundantFieldInitializer" />
</rule>
<rule ref="rulesets/java/strictexception.xml">
<exclude name="AvoidCatchingGenericException" />
</rule>
<rule ref="rulesets/java/strings.xml" />
<rule ref="rulesets/java/typeresolution.xml">
<exclude name="LooseCoupling" />
</rule>
<rule ref="rulesets/java/unnecessary.xml">
<exclude name="UselessParentheses" />
<exclude name="UselessQualifiedThis" />
</rule>
<rule ref="rulesets/java/unusedcode.xml">
<exclude name="UnusedModifier" />
</rule>
</ruleset>

View file

@ -9,7 +9,6 @@ buildscript {
classpath 'com.android.databinding:dataBinder:1.0-rc4'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.chaitanyapramod.gradle:findbugs-android:1.0'
}
}