Skip to content
This repository was archived by the owner on Jan 27, 2019. It is now read-only.

Commit 5569a80

Browse files
committed
Added codenarc phase
1 parent e1415a7 commit 5569a80

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed

build.gradle

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
allprojects {
22
apply plugin: 'groovy'
33
apply plugin: 'idea'
4+
apply plugin: 'codenarc'
45

56
group = 'org.v1v.gradle.plugins.jenkinslint'
67
version = '0.1'
@@ -22,6 +23,11 @@ allprojects {
2223
compile localGroovy()
2324
compile gradleApi()
2425
}
26+
27+
codenarc {
28+
toolVersion = '0.24'
29+
configFile = file("../config/codenarc/rules.groovy")
30+
}
2531
}
2632

2733
task wrapper(type: Wrapper) {

config/codenarc/rules.groovy

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
ruleset {
2+
ruleset('rulesets/basic.xml')
3+
4+
ruleset('rulesets/braces.xml')
5+
6+
ruleset('rulesets/concurrency.xml')
7+
8+
ruleset('rulesets/convention.xml') {
9+
// this rule does not necessarily lead to better code
10+
exclude 'IfStatementCouldBeTernary'
11+
}
12+
13+
ruleset('rulesets/design.xml') {
14+
// we don't care
15+
exclude 'AbstractClassWithoutAbstractMethod'
16+
// we don't care
17+
exclude 'BuilderMethodWithSideEffects'
18+
// we don't care
19+
exclude 'EmptyMethodInAbstractClass'
20+
// we don't care
21+
exclude 'Instanceof'
22+
}
23+
24+
// the DRY rules do not necessarily lead to better code
25+
// ruleset('rulesets/dry.xml')
26+
27+
// these rules cause compilation failure warnings
28+
// ruleset('rulesets/enhanced.xml')
29+
30+
ruleset('rulesets/exceptions.xml')
31+
32+
ruleset('rulesets/formatting.xml') {
33+
// empty blocks like {} are OK
34+
SpaceAfterOpeningBrace {
35+
ignoreEmptyBlock = true
36+
}
37+
// enforce at least one space after map entry colon
38+
SpaceAroundMapEntryColon {
39+
characterAfterColonRegex = /\s/
40+
characterBeforeColonRegex = /./
41+
}
42+
// empty blocks like {} are OK
43+
SpaceBeforeClosingBrace {
44+
ignoreEmptyBlock = true
45+
}
46+
47+
// we don't care for now
48+
exclude 'ClassJavadoc'
49+
}
50+
51+
ruleset('rulesets/generic.xml')
52+
53+
ruleset('rulesets/groovyism.xml') {
54+
// framework methods should be allowed to call leftShift explicitly
55+
ExplicitCallToLeftShiftMethod {
56+
ignoreThisReference = true
57+
}
58+
59+
// not necessarily an issue, problems should be detected by unit tests
60+
exclude 'GStringExpressionWithinString'
61+
}
62+
63+
ruleset('rulesets/imports.xml') {
64+
// we order static imports after other imports because that's the default style in IDEA
65+
MisorderedStaticImports {
66+
comesBefore = false
67+
}
68+
}
69+
70+
ruleset('rulesets/logging.xml')
71+
72+
ruleset('rulesets/naming.xml') {
73+
// this is an issue, but currently the Context classes violate this by convention
74+
exclude 'ConfusingMethodName'
75+
// we don't care for now
76+
exclude 'FactoryMethodName'
77+
}
78+
79+
ruleset('rulesets/security.xml') {
80+
// we don't care because our classes need not to satisfy the Java Beans specification
81+
exclude 'JavaIoPackageAccess'
82+
// we don't care for now
83+
exclude 'FileCreateTempFile'
84+
}
85+
86+
ruleset('rulesets/serialization.xml') {
87+
// we don't care because we are not using Java serialization
88+
exclude 'SerializableClassMustDefineSerialVersionUID'
89+
}
90+
91+
// we don't care for now
92+
// ruleset('rulesets/size.xml')
93+
94+
ruleset('rulesets/unnecessary.xml') {
95+
// we don't care, does not necessarily lead to better code
96+
exclude 'UnnecessaryElseStatement'
97+
// we don't care for now, does not necessarily lead to better code
98+
exclude 'UnnecessaryObjectReferences'
99+
// we do "unnecessary" overrides for the @NoDoc annotation
100+
exclude 'UnnecessaryOverridingMethod'
101+
}
102+
103+
ruleset('rulesets/unused.xml')
104+
}

0 commit comments

Comments
 (0)