Skip to content
This repository was archived by the owner on Oct 8, 2020. It is now read-only.

Commit b5f91b1

Browse files
committed
Enable Travis CI
1 parent 1ab84b3 commit b5f91b1

File tree

2 files changed

+351
-0
lines changed

2 files changed

+351
-0
lines changed

.travis.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
language: scala
2+
sudo: false
3+
cache:
4+
directories:
5+
- $HOME/.m2
6+
scala:
7+
- 2.11.11
8+
script:
9+
- mvn scalastyle:check
10+
- mvn clean install

scalastyle-config.xml

Lines changed: 341 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,341 @@
1+
<!--
2+
~ Licensed to the Apache Software Foundation (ASF) under one or more
3+
~ contributor license agreements. See the NOTICE file distributed with
4+
~ this work for additional information regarding copyright ownership.
5+
~ The ASF licenses this file to You under the Apache License, Version 2.0
6+
~ (the "License"); you may not use this file except in compliance with
7+
~ the License. You may obtain a copy of the License at
8+
~
9+
~ http://www.apache.org/licenses/LICENSE-2.0
10+
~
11+
~ Unless required by applicable law or agreed to in writing, software
12+
~ distributed under the License is distributed on an "AS IS" BASIS,
13+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
~ See the License for the specific language governing permissions and
15+
~ limitations under the License.
16+
-->
17+
<!--
18+
19+
If you wish to turn off checking for a section of code, you can put a comment in the source
20+
before and after the section, with the following syntax:
21+
22+
// scalastyle:off
23+
... // stuff that breaks the styles
24+
// scalastyle:on
25+
26+
You can also disable only one rule, by specifying its rule id, as specified in:
27+
http://www.scalastyle.org/rules-0.7.0.html
28+
29+
// scalastyle:off no.finalize
30+
override def finalize(): Unit = ...
31+
// scalastyle:on no.finalize
32+
33+
This file is divided into 3 sections:
34+
(1) rules that we enforce.
35+
(2) rules that we would like to enforce, but haven't cleaned up the codebase to turn on yet
36+
(or we need to make the scalastyle rule more configurable).
37+
(3) rules that we don't want to enforce.
38+
-->
39+
40+
<scalastyle>
41+
<name>Scalastyle standard configuration</name>
42+
43+
<!-- ================================================================================ -->
44+
<!-- rules we enforce -->
45+
<!-- ================================================================================ -->
46+
47+
<check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"></check>
48+
49+
<!--<check level="error" class="org.scalastyle.file.HeaderMatchesChecker" enabled="true">-->
50+
<!--<parameters>-->
51+
<!--<parameter name="header"><![CDATA[/*-->
52+
<!--* Licensed to the Apache Software Foundation (ASF) under one or more-->
53+
<!--* contributor license agreements. See the NOTICE file distributed with-->
54+
<!--* this work for additional information regarding copyright ownership.-->
55+
<!--* The ASF licenses this file to You under the Apache License, Version 2.0-->
56+
<!--* (the "License"); you may not use this file except in compliance with-->
57+
<!--* the License. You may obtain a copy of the License at-->
58+
<!--*-->
59+
<!--* http://www.apache.org/licenses/LICENSE-2.0-->
60+
<!--*-->
61+
<!--* Unless required by applicable law or agreed to in writing, software-->
62+
<!--* distributed under the License is distributed on an "AS IS" BASIS,-->
63+
<!--* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.-->
64+
<!--* See the License for the specific language governing permissions and-->
65+
<!--* limitations under the License.-->
66+
<!--*/]]></parameter>-->
67+
<!--</parameters>-->
68+
<!--</check>-->
69+
70+
<check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"></check>
71+
72+
<check level="error" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"></check>
73+
74+
<check level="error" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="true"></check>
75+
76+
<check level="warn" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
77+
<parameters>
78+
<parameter name="maxLineLength"><![CDATA[220]]></parameter>
79+
<parameter name="tabSize"><![CDATA[2]]></parameter>
80+
<parameter name="ignoreImports">true</parameter>
81+
</parameters>
82+
</check>
83+
84+
<check level="error" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
85+
<parameters><parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter></parameters>
86+
</check>
87+
88+
<check level="error" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
89+
<parameters><parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter></parameters>
90+
</check>
91+
92+
<check level="error" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
93+
<parameters><parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter></parameters>
94+
</check>
95+
96+
<check level="error" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
97+
<parameters><parameter name="maxParameters"><![CDATA[10]]></parameter></parameters>
98+
</check>
99+
100+
<check level="error" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true"></check>
101+
102+
<check level="error" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"></check>
103+
104+
<check level="error" class="org.scalastyle.scalariform.StructuralTypeChecker" enabled="true"></check>
105+
106+
<check level="error" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"></check>
107+
108+
<check level="error" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
109+
<parameters>
110+
<parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
111+
<parameter name="doubleLineAllowed"><![CDATA[true]]></parameter>
112+
</parameters>
113+
</check>
114+
115+
<check level="error" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="true"></check>
116+
117+
<check level="error" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"></check>
118+
119+
<check customId="nonascii" level="error" class="org.scalastyle.scalariform.NonASCIICharacterChecker" enabled="false"></check>
120+
121+
<check level="error" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" enabled="true"></check>
122+
123+
<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" enabled="true">
124+
<parameters>
125+
<parameter name="tokens">ARROW, EQUALS, ELSE, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
126+
</parameters>
127+
</check>
128+
129+
<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" enabled="true">
130+
<parameters>
131+
<parameter name="tokens">ARROW, EQUALS, COMMA, COLON, IF, ELSE, DO, WHILE, FOR, MATCH, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
132+
</parameters>
133+
</check>
134+
135+
<!-- ??? usually shouldn't be checked into the code base. -->
136+
<check level="error" class="org.scalastyle.scalariform.NotImplementedErrorUsage" enabled="true"></check>
137+
138+
<!-- As of SPARK-7558, all tests in Spark should extend o.a.s.SparkFunSuite instead of FunSuite directly -->
139+
<!--<check customId="funsuite" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">-->
140+
<!--<parameters><parameter name="regex">^FunSuite[A-Za-z]*$</parameter></parameters>-->
141+
<!--<customMessage>Tests must extend org.apache.spark.SparkFunSuite instead.</customMessage>-->
142+
<!--</check>-->
143+
144+
<!-- all printlns need to be wrapped in '// scalastyle:off/on println' -->
145+
<!--<check customId="println" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">-->
146+
<!--<parameters><parameter name="regex">^println$</parameter></parameters>-->
147+
<!--<customMessage><![CDATA[Are you sure you want to println? If yes, wrap the code block with-->
148+
<!--// scalastyle:off println-->
149+
<!--println(...)-->
150+
<!--// scalastyle:on println]]></customMessage>-->
151+
<!--</check>-->
152+
153+
<check customId="visiblefortesting" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
154+
<parameters><parameter name="regex">@VisibleForTesting</parameter></parameters>
155+
<customMessage><![CDATA[
156+
@VisibleForTesting causes classpath issues. Please note this in the java doc instead (SPARK-11615).
157+
]]></customMessage>
158+
</check>
159+
160+
<check customId="runtimeaddshutdownhook" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
161+
<parameters><parameter name="regex">Runtime\.getRuntime\.addShutdownHook</parameter></parameters>
162+
<customMessage><![CDATA[
163+
Are you sure that you want to use Runtime.getRuntime.addShutdownHook? In most cases, you should use
164+
ShutdownHookManager.addShutdownHook instead.
165+
If you must use Runtime.getRuntime.addShutdownHook, wrap the code block with
166+
// scalastyle:off runtimeaddshutdownhook
167+
Runtime.getRuntime.addShutdownHook(...)
168+
// scalastyle:on runtimeaddshutdownhook
169+
]]></customMessage>
170+
</check>
171+
172+
<check customId="mutablesynchronizedbuffer" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
173+
<parameters><parameter name="regex">mutable\.SynchronizedBuffer</parameter></parameters>
174+
<customMessage><![CDATA[
175+
Are you sure that you want to use mutable.SynchronizedBuffer? In most cases, you should use
176+
java.util.concurrent.ConcurrentLinkedQueue instead.
177+
If you must use mutable.SynchronizedBuffer, wrap the code block with
178+
// scalastyle:off mutablesynchronizedbuffer
179+
mutable.SynchronizedBuffer[...]
180+
// scalastyle:on mutablesynchronizedbuffer
181+
]]></customMessage>
182+
</check>
183+
184+
<check customId="classforname" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
185+
<parameters><parameter name="regex">Class\.forName</parameter></parameters>
186+
<customMessage><![CDATA[
187+
Are you sure that you want to use Class.forName? In most cases, you should use Utils.classForName instead.
188+
If you must use Class.forName, wrap the code block with
189+
// scalastyle:off classforname
190+
Class.forName(...)
191+
// scalastyle:on classforname
192+
]]></customMessage>
193+
</check>
194+
195+
<check customId="awaitresult" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
196+
<parameters><parameter name="regex">Await\.result</parameter></parameters>
197+
<customMessage><![CDATA[
198+
Are you sure that you want to use Await.result? In most cases, you should use ThreadUtils.awaitResult instead.
199+
If you must use Await.result, wrap the code block with
200+
// scalastyle:off awaitresult
201+
Await.result(...)
202+
// scalastyle:on awaitresult
203+
]]></customMessage>
204+
</check>
205+
206+
<!-- As of SPARK-9613 JavaConversions should be replaced with JavaConverters -->
207+
<check customId="javaconversions" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
208+
<parameters><parameter name="regex">JavaConversions</parameter></parameters>
209+
<customMessage>Instead of importing implicits in scala.collection.JavaConversions._, import
210+
scala.collection.JavaConverters._ and use .asScala / .asJava methods</customMessage>
211+
</check>
212+
213+
<check customId="commonslang2" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
214+
<parameters><parameter name="regex">org\.apache\.commons\.lang\.</parameter></parameters>
215+
<customMessage>Use Commons Lang 3 classes (package org.apache.commons.lang3.*) instead
216+
of Commons Lang 2 (package org.apache.commons.lang.*)</customMessage>
217+
</check>
218+
219+
<check customId="extractopt" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
220+
<parameters><parameter name="regex">extractOpt</parameter></parameters>
221+
<customMessage>Use Utils.jsonOption(x).map(.extract[T]) instead of .extractOpt[T], as the latter
222+
is slower. </customMessage>
223+
</check>
224+
225+
<check level="warning" class="org.scalastyle.scalariform.ImportOrderChecker" enabled="true">
226+
<parameters>
227+
<parameter name="groups">java,scala,3rdParty,sansa</parameter>
228+
<parameter name="group.java">javax?\..*</parameter>
229+
<parameter name="group.scala">scalax?\..*</parameter>
230+
<parameter name="group.3rdParty">(?!net\.sansa_stack\.owl\.).*</parameter>
231+
<parameter name="group.sansa">net\.sansa_stack\..*</parameter>
232+
</parameters>
233+
</check>
234+
235+
<check level="error" class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" enabled="true">
236+
<parameters>
237+
<parameter name="tokens">COMMA</parameter>
238+
</parameters>
239+
</check>
240+
241+
<!-- SPARK-3854: Single Space between ')' and '{' -->
242+
<check customId="SingleSpaceBetweenRParenAndLCurlyBrace" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
243+
<parameters><parameter name="regex">\)\{</parameter></parameters>
244+
<customMessage><![CDATA[
245+
Single Space between ')' and `{`.
246+
]]></customMessage>
247+
</check>
248+
249+
<!--<check customId="NoScalaDoc" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">-->
250+
<!--<parameters><parameter name="regex">(?m)^(\s*)/[*][*].*$(\r|)\n^\1 [*]</parameter></parameters>-->
251+
<!--<customMessage>Use Javadoc style indentation for multiline comments</customMessage>-->
252+
<!--</check>-->
253+
254+
<check customId="OmitBracesInCase" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
255+
<parameters><parameter name="regex">case[^\n>]*=>\s*\{</parameter></parameters>
256+
<customMessage>Omit braces in case clauses.</customMessage>
257+
</check>
258+
259+
<!-- SPARK-16877: Avoid Java annotations -->
260+
<check customId="OverrideJavaCase" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
261+
<parameters><parameter name="regex">^Override$</parameter></parameters>
262+
<customMessage>override modifier should be used instead of @java.lang.Override.</customMessage>
263+
</check>
264+
265+
<check level="error" class="org.scalastyle.scalariform.DeprecatedJavaChecker" enabled="true"></check>
266+
267+
<!-- ================================================================================ -->
268+
<!-- rules we'd like to enforce, but haven't cleaned up the codebase yet -->
269+
<!-- ================================================================================ -->
270+
271+
<!-- We cannot turn the following two on, because it'd fail a lot of string interpolation use cases. -->
272+
<!-- Ideally the following two rules should be configurable to rule out string interpolation. -->
273+
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" enabled="false"></check>
274+
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" enabled="false"></check>
275+
276+
<!-- This breaks symbolic method names so we don't turn it on. -->
277+
<!-- Maybe we should update it to allow basic symbolic names, and then we are good to go. -->
278+
<check level="error" class="org.scalastyle.scalariform.MethodNamesChecker" enabled="false">
279+
<parameters>
280+
<parameter name="regex"><![CDATA[^[a-z][A-Za-z0-9]*$]]></parameter>
281+
</parameters>
282+
</check>
283+
284+
<!-- Should turn this on, but we have a few places that need to be fixed first -->
285+
<check level="error" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="true"></check>
286+
287+
<!-- ================================================================================ -->
288+
<!-- rules we don't want -->
289+
<!-- ================================================================================ -->
290+
291+
<check level="error" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="false">
292+
<parameters><parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter></parameters>
293+
</check>
294+
295+
<!-- We want the opposite of this: NewLineAtEofChecker -->
296+
<check level="error" class="org.scalastyle.file.NoNewLineAtEofChecker" enabled="false"></check>
297+
298+
<!-- This one complains about all kinds of random things. Disable. -->
299+
<check level="error" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" enabled="false"></check>
300+
301+
<!-- We use return quite a bit for control flows and guards -->
302+
<check level="error" class="org.scalastyle.scalariform.ReturnChecker" enabled="false"></check>
303+
304+
<!-- We use null a lot in low level code and to interface with 3rd party code -->
305+
<check level="error" class="org.scalastyle.scalariform.NullChecker" enabled="false"></check>
306+
307+
<!-- Doesn't seem super big deal here ... -->
308+
<check level="error" class="org.scalastyle.scalariform.NoCloneChecker" enabled="false"></check>
309+
310+
<!-- Doesn't seem super big deal here ... -->
311+
<check level="error" class="org.scalastyle.file.FileLengthChecker" enabled="false">
312+
<parameters><parameter name="maxFileLength">800></parameter></parameters>
313+
</check>
314+
315+
<!-- Doesn't seem super big deal here ... -->
316+
<check level="error" class="org.scalastyle.scalariform.NumberOfTypesChecker" enabled="false">
317+
<parameters><parameter name="maxTypes">30</parameter></parameters>
318+
</check>
319+
320+
<!-- Doesn't seem super big deal here ... -->
321+
<check level="error" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" enabled="false">
322+
<parameters><parameter name="maximum">10</parameter></parameters>
323+
</check>
324+
325+
<!-- Doesn't seem super big deal here ... -->
326+
<check level="error" class="org.scalastyle.scalariform.MethodLengthChecker" enabled="false">
327+
<parameters><parameter name="maxLength">50</parameter></parameters>
328+
</check>
329+
330+
<!-- Not exactly feasible to enforce this right now. -->
331+
<!-- It is also infrequent that somebody introduces a new class with a lot of methods. -->
332+
<check level="error" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" enabled="false">
333+
<parameters><parameter name="maxMethods"><![CDATA[30]]></parameter></parameters>
334+
</check>
335+
336+
<!-- Doesn't seem super big deal here, and we have a lot of magic numbers ... -->
337+
<check level="error" class="org.scalastyle.scalariform.MagicNumberChecker" enabled="false">
338+
<parameters><parameter name="ignore">-1,0,1,2,3</parameter></parameters>
339+
</check>
340+
341+
</scalastyle>

0 commit comments

Comments
 (0)