Skip to content

Commit ea130a5

Browse files
committed
Add code quality files
1 parent 56eb62c commit ea130a5

File tree

4 files changed

+299
-0
lines changed

4 files changed

+299
-0
lines changed

Diff for: Code_Quality/checkstyle/checkstyle-config.xml

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4+
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5+
6+
<module name = "Checker">
7+
8+
<property name="charset" value="UTF-8"/>
9+
10+
<property name="severity" value="error"/>
11+
12+
<module name="FileTabCharacter">
13+
<property name="eachLine" value="true"/>
14+
</module>
15+
16+
<module name="TreeWalker">
17+
18+
<!-- Imports -->
19+
20+
<module name="RedundantImport">
21+
<property name="severity" value="error"/>
22+
</module>
23+
24+
<module name="AvoidStarImport">
25+
<property name="severity" value="error"/>
26+
</module>
27+
28+
<!-- General Code Style -->
29+
30+
<module name="LineLength">
31+
<property name="max" value="100"/>
32+
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
33+
</module>
34+
35+
<module name="EmptyBlock">
36+
<property name="option" value="TEXT"/>
37+
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
38+
</module>
39+
40+
<module name="EmptyCatchBlock">
41+
<property name="exceptionVariableName" value="expected"/>
42+
</module>
43+
44+
<module name="LeftCurly">
45+
<property name="maxLineLength" value="100"/>
46+
</module>
47+
48+
<module name="RightCurly">
49+
<property name="option" value="alone"/>
50+
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
51+
</module>
52+
53+
<module name="RightCurly">
54+
<property name="option" value="same"/>
55+
</module>
56+
57+
<module name="NoFinalizer"/>
58+
59+
<module name="ArrayTypeStyle"/>
60+
61+
<module name="ModifierOrder"/>
62+
63+
<module name="Indentation">
64+
<property name="basicOffset" value="4"/>
65+
<property name="braceAdjustment" value="0"/>
66+
<property name="caseIndent" value="4"/>
67+
<property name="throwsIndent" value="4"/>
68+
<property name="lineWrappingIndentation" value="8"/>
69+
<property name="arrayInitIndent" value="2"/>
70+
</module>
71+
72+
<!-- White Space -->
73+
74+
<module name="GenericWhitespace">
75+
<message key="ws.followed"
76+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
77+
<message key="ws.preceded"
78+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
79+
<message key="ws.illegalFollow"
80+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
81+
<message key="ws.notPreceded"
82+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
83+
</module>
84+
85+
<module name="WhitespaceAround">
86+
<property name="allowEmptyConstructors" value="true"/>
87+
<property name="allowEmptyMethods" value="false"/>
88+
<property name="allowEmptyTypes" value="false"/>
89+
<property name="allowEmptyLoops" value="false"/>
90+
<message key="ws.notFollowed"
91+
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
92+
<message key="ws.notPreceded"
93+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
94+
<property name="severity" value="error"/>
95+
</module>
96+
97+
<module name="WhitespaceAfter">
98+
<property name="tokens" value="COMMA, SEMI, TYPECAST"/>
99+
</module>
100+
101+
<module name="NoWhitespaceBefore">
102+
<property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
103+
<property name="allowLineBreaks" value="true"/>
104+
</module>
105+
106+
<module name="NoWhitespaceAfter">
107+
<property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>
108+
<property name="allowLineBreaks" value="true"/>
109+
</module>
110+
111+
<!-- Naming -->
112+
113+
<module name="PackageName">
114+
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
115+
<message key="name.invalidPattern"
116+
value="Package name ''{0}'' must match pattern ''{1}''."/>
117+
</module>
118+
119+
<module name="MethodName">
120+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
121+
<message key="name.invalidPattern"
122+
value="Method name ''{0}'' must match pattern ''{1}''."/>
123+
</module>
124+
125+
<module name="TypeName">
126+
<message key="name.invalidPattern"
127+
value="Type name ''{0}'' must match pattern ''{1}''."/>
128+
</module>
129+
130+
<module name="MemberName">
131+
<property name="applyToPublic" value="false" />
132+
<property name="applyToPackage" value="false" />
133+
<property name="applyToProtected" value="false" />
134+
<property name="format" value="^m[A-Z][a-z0-9][a-zA-Z0-9]*$"/>
135+
<message key="name.invalidPattern"
136+
value="Member name ''{0}'' must match pattern ''{1}''."/>
137+
</module>
138+
139+
<module name="ParameterName">
140+
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
141+
<message key="name.invalidPattern"
142+
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
143+
</module>
144+
145+
<module name="LocalVariableName">
146+
<property name="tokens" value="VARIABLE_DEF"/>
147+
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
148+
<property name="allowOneCharVarInForLoop" value="true"/>
149+
<message key="name.invalidPattern"
150+
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
151+
</module>
152+
153+
<module name="ClassTypeParameterName">
154+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
155+
<message key="name.invalidPattern"
156+
value="Class type name ''{0}'' must match pattern ''{1}''."/>
157+
</module>
158+
159+
<module name="MethodTypeParameterName">
160+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
161+
<message key="name.invalidPattern"
162+
value="Method type name ''{0}'' must match pattern ''{1}''."/>
163+
</module>
164+
165+
</module>
166+
167+
</module>

Diff for: Code_Quality/findbugs/android-exclude-filter.xml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<FindBugsFilter>
3+
<Match>
4+
<Class name="~.*\.R\$.*"/>
5+
</Match>
6+
<Match>
7+
<Class name="~.*\.Manifest\$.*"/>
8+
</Match>
9+
<!-- All bugs in test classes, except for JUnit-specific bugs -->
10+
<Match>
11+
<Class name="~.*\.*Test" />
12+
<Not>
13+
<Bug code="IJU" />
14+
</Not>
15+
</Match>
16+
17+
18+
</FindBugsFilter>

Diff for: Code_Quality/pmd/pmd-ruleset.xml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0"?>
2+
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Android Application Rules"
3+
xmlns="http://pmd.sf.net/ruleset/1.0.0"
4+
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
5+
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
6+
7+
<description>Custom ruleset for ribot Android application</description>
8+
9+
<exclude-pattern>.*/R.java</exclude-pattern>
10+
<exclude-pattern>.*/gen/.*</exclude-pattern>
11+
12+
<rule ref="rulesets/java/android.xml" />
13+
<rule ref="rulesets/java/clone.xml" />
14+
<rule ref="rulesets/java/finalizers.xml" />
15+
<rule ref="rulesets/java/imports.xml">
16+
<exclude name="TooManyStaticImports" />
17+
</rule>
18+
<rule ref="rulesets/java/logging-java.xml">
19+
<exclude name="GuardLogStatementJavaUtil" />
20+
</rule>
21+
<rule ref="rulesets/java/braces.xml">
22+
<exclude name="IfStmtsMustUseBraces" />
23+
</rule>
24+
<rule ref="rulesets/java/strings.xml" >
25+
<exclude name="AvoidDuplicateLiterals"/>
26+
</rule>
27+
<rule ref="rulesets/java/basic.xml" />
28+
<rule ref="rulesets/java/naming.xml">
29+
<exclude name="AbstractNaming" />
30+
<exclude name="LongVariable" />
31+
<exclude name="ShortMethodName" />
32+
<exclude name="ShortVariable" />
33+
<exclude name="ShortClassName" />
34+
<exclude name="VariableNamingConventions" />
35+
</rule>
36+
</ruleset>

Diff for: Code_Quality/quality.gradle

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
apply plugin: 'checkstyle'
2+
apply plugin: 'findbugs'
3+
apply plugin: 'pmd'
4+
5+
dependencies {
6+
checkstyle 'com.puppycrawl.tools:checkstyle:6.5'
7+
}
8+
9+
def qualityConfigDir = "$project.rootDir/config/quality";
10+
def reportsDir = "$project.buildDir/reports"
11+
12+
check.dependsOn 'checkstyle', 'findbugs', 'pmd'
13+
14+
task checkstyle(type: Checkstyle, group: 'Verification', description: 'Runs code style checks') {
15+
configFile file("$qualityConfigDir/checkstyle/checkstyle-config.xml")
16+
source 'src'
17+
include '**/*.java'
18+
19+
reports {
20+
xml.enabled = true
21+
xml {
22+
destination "$reportsDir/checkstyle/checkstyle.xml"
23+
}
24+
}
25+
26+
classpath = files( )
27+
}
28+
29+
task findbugs(type: FindBugs,
30+
group: 'Verification',
31+
description: 'Inspect java bytecode for bugs',
32+
dependsOn: ['compileStagingDebugSources','compileProdReleaseSources']) {
33+
34+
ignoreFailures = false
35+
effort = "max"
36+
reportLevel = "high"
37+
excludeFilter = new File("$qualityConfigDir/findbugs/android-exclude-filter.xml")
38+
classes = files("$project.rootDir/app/build/intermediates/classes")
39+
40+
source 'src'
41+
include '**/*.java'
42+
exclude '**/gen/**'
43+
44+
reports {
45+
xml.enabled = true
46+
html.enabled = false
47+
xml {
48+
destination "$reportsDir/findbugs/findbugs.xml"
49+
}
50+
html {
51+
destination "$reportsDir/findbugs/findbugs.html"
52+
}
53+
}
54+
55+
classpath = files()
56+
}
57+
58+
59+
task pmd(type: Pmd, group: 'Verification', description: 'Inspect sourcecode for bugs') {
60+
ruleSetFiles = files("$qualityConfigDir/pmd/pmd-ruleset.xml")
61+
ignoreFailures = false
62+
ruleSets = []
63+
64+
source 'src'
65+
include '**/*.java'
66+
exclude '**/gen/**'
67+
68+
reports {
69+
xml.enabled = true
70+
html.enabled = true
71+
xml {
72+
destination "$reportsDir/pmd/pmd.xml"
73+
}
74+
html {
75+
destination "$reportsDir/pmd/pmd.html"
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)