Skip to content

Commit 092f4fb

Browse files
wdscheiwdschei
authored andcommitted
Added Scalastyle support to the entire project in a way to be informative, but not fail the build.
1 parent fdbfdb7 commit 092f4fb

2 files changed

Lines changed: 279 additions & 0 deletions

File tree

pom.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,32 @@
221221
</plugin>
222222
</plugins>
223223
</pluginManagement>
224+
<plugins>
225+
<plugin>
226+
<groupId>org.scalastyle</groupId>
227+
<artifactId>scalastyle-maven-plugin</artifactId>
228+
<version>0.8.0</version>
229+
<configuration>
230+
<configLocation>project/scalastyle_config.xml</configLocation>
231+
<!-- When this is ready to go live, set these two failOn's to TRUE. -->
232+
<failOnViolation>false</failOnViolation>
233+
<failOnWarning>false</failOnWarning>
234+
<includeTestSourceDirectory>true</includeTestSourceDirectory>
235+
<sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
236+
<testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
237+
<outputFile>${project.build.directory}/scalastyle_output.xml</outputFile>
238+
<outputEncoding>UTF-8</outputEncoding>
239+
</configuration>
240+
<executions>
241+
<execution>
242+
<phase>verify</phase>
243+
<goals>
244+
<goal>check</goal>
245+
</goals>
246+
</execution>
247+
</executions>
248+
</plugin>
249+
</plugins>
224250
</build>
225251
<profiles>
226252
<profile>

project/scalastyle_config.xml

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
<scalastyle>
2+
<name>
3+
Scalastyle standard configuration v0.8.0
4+
with some additions for IntelliJ IDEA default source formatter,
5+
some disabled, and some slightly modified for this codebase.
6+
</name>
7+
<check level="warning" class="org.scalastyle.file.FileTabChecker" enabled="true"/>
8+
<check level="warning" class="org.scalastyle.file.FileLengthChecker" enabled="true">
9+
<parameters>
10+
<parameter name="maxFileLength"><![CDATA[800]]></parameter>
11+
</parameters>
12+
</check>
13+
<check level="warning" class="org.scalastyle.file.HeaderMatchesChecker" enabled="true">
14+
<parameters>
15+
<parameter name="header"><![CDATA[/**
16+
* Copyright 2016 Rackspace US, Inc.
17+
*
18+
* Licensed under the Apache License, Version 2.0 (the "License");
19+
* you may not use this file except in compliance with the License.
20+
* You may obtain a copy of the License at
21+
*
22+
* http://www.apache.org/licenses/LICENSE-2.0
23+
*
24+
* Unless required by applicable law or agreed to in writing, software
25+
* distributed under the License is distributed on an "AS IS" BASIS,
26+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27+
* See the License for the specific language governing permissions and
28+
* limitations under the License.
29+
*/]]></parameter>
30+
</parameters>
31+
</check>
32+
<check level="warning" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"/>
33+
<check level="warning" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="true">
34+
<parameters>
35+
<parameter name="ignoreWhitespaceLines"><![CDATA[false]]></parameter>
36+
</parameters>
37+
</check>
38+
<check level="warning" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"/>
39+
<check level="warning" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
40+
<parameters>
41+
<parameter name="maxLineLength"><![CDATA[160]]></parameter>
42+
<parameter name="tabSize"><![CDATA[4]]></parameter>
43+
</parameters>
44+
</check>
45+
<check level="warning" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
46+
<parameters>
47+
<parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
48+
</parameters>
49+
</check>
50+
<check level="warning" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
51+
<parameters>
52+
<parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
53+
</parameters>
54+
</check>
55+
<check level="warning" class="org.scalastyle.scalariform.PackageNamesChecker" enabled="true">
56+
<parameters>
57+
<parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
58+
</parameters>
59+
</check>
60+
<check level="warning" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
61+
<parameters>
62+
<parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
63+
</parameters>
64+
</check>
65+
<check level="warning" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="true"/>
66+
<check level="warning" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="true">
67+
<parameters>
68+
<parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter>
69+
</parameters>
70+
</check>
71+
<check level="warning" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
72+
<parameters>
73+
<parameter name="maxParameters"><![CDATA[8]]></parameter>
74+
</parameters>
75+
</check>
76+
<check level="warning" class="org.scalastyle.scalariform.MagicNumberChecker" enabled="true">
77+
<parameters>
78+
<parameter name="ignore"><![CDATA[-1,0,1,2,3]]></parameter>
79+
</parameters>
80+
</check>
81+
<check level="warning" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" enabled="true"/>
82+
<check level="warning" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" enabled="true"/>
83+
<check level="warning" class="org.scalastyle.scalariform.ReturnChecker" enabled="true"/>
84+
<!-- Disabled to allow easier interaction with Java API's. -->
85+
<check level="warning" class="org.scalastyle.scalariform.NullChecker" enabled="false"/>
86+
<check level="warning" class="org.scalastyle.scalariform.NoCloneChecker" enabled="true"/>
87+
<check level="warning" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true"/>
88+
<check level="warning" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"/>
89+
<check level="warning" class="org.scalastyle.scalariform.StructuralTypeChecker" enabled="true"/>
90+
<check level="warning" class="org.scalastyle.file.RegexChecker" enabled="true">
91+
<parameters>
92+
<parameter name="regex"><![CDATA[println]]></parameter>
93+
<parameter name="line"><![CDATA[false]]></parameter>
94+
</parameters>
95+
</check>
96+
<check level="warning" class="org.scalastyle.scalariform.NumberOfTypesChecker" enabled="true">
97+
<parameters>
98+
<parameter name="maxTypes"><![CDATA[30]]></parameter>
99+
</parameters>
100+
</check>
101+
<check level="warning" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" enabled="true">
102+
<parameters>
103+
<parameter name="maximum"><![CDATA[10]]></parameter>
104+
</parameters>
105+
</check>
106+
<check level="warning" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"/>
107+
<check level="warning" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" enabled="true"/>
108+
<check level="warning" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
109+
<parameters>
110+
<parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
111+
<parameter name="doubleLineAllowed"><![CDATA[false]]></parameter>
112+
</parameters>
113+
</check>
114+
<check level="warning" class="org.scalastyle.scalariform.MethodLengthChecker" enabled="true">
115+
<parameters>
116+
<parameter name="maxLength"><![CDATA[50]]></parameter>
117+
</parameters>
118+
</check>
119+
<check level="warning" class="org.scalastyle.scalariform.MethodNamesChecker" enabled="true">
120+
<parameters>
121+
<parameter name="regex"><![CDATA[^[a-z][A-Za-z0-9]*(_=)?$]]></parameter>
122+
</parameters>
123+
</check>
124+
<check level="warning" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" enabled="true">
125+
<parameters>
126+
<parameter name="maxMethods"><![CDATA[30]]></parameter>
127+
</parameters>
128+
</check>
129+
<check level="warning" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="true"/>
130+
<check level="warning" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"/>
131+
<check level="warning" class="org.scalastyle.scalariform.NotImplementedErrorUsage" enabled="true"/>
132+
<check level="warning" class="org.scalastyle.scalariform.BlockImportChecker" enabled="false"/>
133+
<check level="warning" class="org.scalastyle.scalariform.ProcedureDefinitionChecker" enabled="true"/>
134+
<check level="warning" class="org.scalastyle.scalariform.ForBraceChecker" enabled="true"/>
135+
<check level="warning" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" enabled="true"/>
136+
<check level="warning" class="org.scalastyle.scalariform.FieldNamesChecker" enabled="true">
137+
<parameters>
138+
<!-- Updated to allow numbers in field names and Java style constants. -->
139+
<!--parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter-->
140+
<parameter name="regex"><![CDATA[^([a-z][A-Za-z0-9]*)|([A-Z][A-Z0-9_]*)$]]></parameter>
141+
</parameters>
142+
</check>
143+
<check level="warning" class="org.scalastyle.scalariform.TodoCommentChecker" enabled="true">
144+
<parameters>
145+
<parameter name="words"><![CDATA[TODO|FIXME]]></parameter>
146+
</parameters>
147+
</check>
148+
149+
<!-- The remaining checks are the additions based on the default IntelliJ Code Formatter. -->
150+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
151+
<parameters>
152+
<parameter name="regex">for\(|if\(|while\(</parameter>
153+
</parameters>
154+
<customMessage>No space before paren after for, if, or while</customMessage>
155+
</check>
156+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
157+
<parameters>
158+
<parameter name="regex">for\s\s+\(|if\s\s+\(|while\s\s+\(</parameter>
159+
</parameters>
160+
<customMessage>Too many spaces before paren after for, if, or while</customMessage>
161+
</check>
162+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
163+
<parameters>
164+
<parameter name="regex">if.*\(.*\)\{|while.*\(.*\)\{</parameter>
165+
</parameters>
166+
<customMessage>No space before if or while left brace</customMessage>
167+
</check>
168+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
169+
<parameters>
170+
<parameter name="regex">if.*\(.*\)\s\s+\{|while.*\(.*\)\s\s+\{</parameter>
171+
</parameters>
172+
<customMessage>Too many spaces before if or while left brace</customMessage>
173+
</check>
174+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
175+
<parameters>
176+
<parameter name="regex">else\{|else.*\)\{</parameter>
177+
</parameters>
178+
<customMessage>No space before else left brace</customMessage>
179+
</check>
180+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
181+
<parameters>
182+
<parameter name="regex">else\s\s+\{|else.*\)\s\s+\{</parameter>
183+
</parameters>
184+
<customMessage>Too many spaces before else left brace</customMessage>
185+
</check>
186+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
187+
<parameters>
188+
<parameter name="regex">for.*\(.*\)\{|do\{</parameter>
189+
</parameters>
190+
<customMessage>No space before for or do left brace</customMessage>
191+
</check>
192+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
193+
<parameters>
194+
<parameter name="regex">for.*\(.*\)\s\s+\{|do\s\s+\{</parameter>
195+
</parameters>
196+
<customMessage>Too many spaces before for or do left brace</customMessage>
197+
</check>
198+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
199+
<parameters>
200+
<parameter name="regex">class .*[^\s-]\{|def.*[^\s-]\{</parameter>
201+
</parameters>
202+
<customMessage>No space before class or method left brace</customMessage>
203+
</check>
204+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
205+
<parameters>
206+
<parameter name="regex">class .*\s\s+\{|def.*\s\s+\{</parameter>
207+
</parameters>
208+
<customMessage>Too many spaces before class or method left brace</customMessage>
209+
</check>
210+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
211+
<parameters>
212+
<parameter name="regex">try\{|catch\{|finally\{</parameter>
213+
</parameters>
214+
<customMessage>No space before try, catch, or finally left brace</customMessage>
215+
</check>
216+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
217+
<parameters>
218+
<parameter name="regex">try\s\s+\{|catch\s\s+\{|finally\s\s+\{</parameter>
219+
</parameters>
220+
<customMessage>Too many spaces before try, catch, or finally left brace</customMessage>
221+
</check>
222+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
223+
<parameters>
224+
<parameter name="regex">^[^"]*:[^\s-]|^[^"]*;[^\s-]|^[^"]*,[^\s-]</parameter>
225+
</parameters>
226+
<customMessage>Require space after comma, semicolon, and colon not in string</customMessage>
227+
</check>
228+
<!-- this causes too many false positives -->
229+
<check enabled="false" class="org.scalastyle.file.RegexChecker" level="warning">
230+
<parameters>
231+
<parameter name="regex">\n\s*\{</parameter>
232+
</parameters>
233+
<customMessage>Brace on a newline</customMessage>
234+
</check>
235+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
236+
<parameters>
237+
<parameter name="regex">package.*\n[^\s-]</parameter>
238+
</parameters>
239+
<customMessage>Blank line after package please!</customMessage>
240+
</check>
241+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
242+
<parameters>
243+
<parameter name="regex">^import .*\n(?!import )[^\n]*[^\s-]</parameter>
244+
</parameters>
245+
<customMessage>missing blank line after import</customMessage>
246+
</check>
247+
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
248+
<parameters>
249+
<parameter name="regex">\n\n\n\n</parameter>
250+
</parameters>
251+
<customMessage>max 2 blank lines in the code</customMessage>
252+
</check>
253+
</scalastyle>

0 commit comments

Comments
 (0)