记录下Scalastyle规则,方便查询。内容比较多,使用Ctrl + F 输入需要查询的检查器进行搜索查询。
目录
介绍
Scalastyle 是专门针对Scala代码开发的轻巧的code style检测工具,类似于Java代码检查工具Checkstyle、Findbugs等。可以在Maven中集成到项目中,方便代码风格的检测。
最下面附上了Spark2.4.3的 Scalastyle 配置代码,可以借鉴。
Scalastyle常用关键字 //scalastyle:on 和 //scalastyle:off,如:
-
//scalastyle:on println
-
if (args.length < 2) {
-
println("Usage:")
-
println("DRIVER_MEMORY=[mem] spark-submit " +
-
"com.github.ehiggs.spark.terasort.TeraGen " +
-
"spark-terasort-1.0-SNAPSHOT-with-dependencies.jar " +
-
"[output-size] [output-directory]")
-
println(" ")
-
println("Example:")
-
println("DRIVER_MEMORY=50g spark-submit " +
-
"com.github.ehiggs.spark.terasort.TeraGen " +
-
"spark-terasort-1.0-SNAPSHOT-with-dependencies.jar " +
-
"100G file:///scratch/username/terasort_in")
-
System.exit(0)
-
}
-
//scalastyle:off println
规则
官网说明:已实现的规则
目前已实现规则有69条
使用示例
主要在 scalastyle-config.xml 中设置。
org.scalastyle.file.FileLengthChecker 检查文件中的行数
-
<check enabled="true" class="org.scalastyle.file.FileLengthChecker" level="warning">
-
<parameters>
-
<parameter name="maxFileLength">800</parameter>
-
</parameters>
-
</check>
org.scalastyle.file.FileLineLengthChecker 检查一行中的字符数
-
<check enabled="true" class="org.scalastyle.file.FileLineLengthChecker" level="warning">
-
<parameters>
-
<parameter name="maxLineLength">100</parameter>
-
<parameter name="tabSize">2</parameter>
-
<parameter name="ignoreImports">true</parameter>
-
</parameters>
-
</check>
org.scalastyle.file.FileTabChecker 检查文件中是否有标签
<check enabled="true" class="org.scalastyle.file.FileTabChecker" level="warning"/>
org.scalastyle.file.HeaderMatchesChecker 检查每个文件的前几行与文本匹配
-
<check enabled="true" class="org.scalastyle.file.HeaderMatchesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">false</parameter>
-
<parameter name="header">// Copyright \(C\) 2011-2012 the original author or authors.</parameter>
-
</parameters>
-
</check>
或者
-
<check enabled="true" class="org.scalastyle.file.HeaderMatchesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">true</parameter>
-
<parameter name="header">// Copyright \(C\) (?:\d{4}-)?\d{4} the original author or authors.</parameter>
-
</parameters>
-
</check>
org.scalastyle.file.IndentationChecker 检查行是否由Tab的倍数缩进
-
<check enabled="true" class="org.scalastyle.file.IndentationChecker" level="warning">
-
<parameters>
-
<parameter name="tabSize">2</parameter>
-
<parameter name="methodParamIndentSize">2</parameter>
-
<parameter name="classParamIndentSize">4</parameter>
-
</parameters>
-
</check>
org.scalastyle.file.NewLineAtEofChecker 检查文件是否以换行符结尾
<check enabled="true" class="org.scalastyle.file.NewLineAtEofChecker" level="warning"/>
org.scalastyle.file.NoNewLineAtEofChecker 检查文件不是以换行符结尾
<check enabled="true" class="org.scalastyle.file.NoNewLineAtEofChecker" level="warning"/>
org.scalastyle.file.RegexChecker 检查正则表达式是否匹配
-
<check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
-
<parameters>
-
<parameter name="regex">(?m)^\s*$(\r|)\n^\s*$(\r|)\n</parameter>
-
<parameter name="line">false</parameter>
-
</parameters>
-
<customMessage>No double blank lines</customMessage>
-
</check>
org.scalastyle.file.WhitespaceEndOfLineChecker 检查行尾没有空格
-
<check enabled="true" class="org.scalastyle.file.WhitespaceEndOfLineChecker" level="warning">
-
<parameters>
-
<parameter default="false" type="boolean" name="ignoreWhitespaceLines"/>
-
</parameters>
-
</check>
org.scalastyle.scalariform.BlockImportChecker 检查导入块是否使用
<check enabled="true" class="org.scalastyle.scalariform.BlockImportChecker" level="warning"/>
org.scalastyle.scalariform.ClassNamesChecker 检查类名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.ClassNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[A-Z][A-Za-z]*$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.ClassTypeParameterChecker 检查类的类型参数与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.ClassTypeParameterChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[A-Z_]$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.CovariantEqualsChecker 检查类和对象在没有覆盖的情况下定义了相等(java.lang.object)
<check enabled="true" class="org.scalastyle.scalariform.CovariantEqualsChecker" level="warning"/>
org.scalastyle.scalariform.CyclomaticComplexityChecker 检查方法的参数复杂度是否超过设定值
-
<check enabled="true" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" level="warning">
-
<parameters>
-
<parameter name="maximum">10</parameter>
-
<parameter name="countCases">true</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.DeprecatedJavaChecker 检查应该用Scala @deprecated代替Java @Deprecated
<check enabled="true" class="org.scalastyle.scalariform.DeprecatedJavaChecker" level="warning"/>
org.scalastyle.scalariform.DisallowSpaceAfterTokenChecker 检查某些既定标记后不允许使用空格
-
<check enabled="true" class="org.scalastyle.scalariform.DisallowSpaceAfterTokenChecker" level="warning">
-
<parameters>
-
<parameter name="tokens">LPAREN</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker 检查某些既定标记前不允许使用空格
-
<check enabled="true" class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" level="warning">
-
<parameters>
-
<parameter name="tokens">COLON, COMMA, RPAREN</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.EmptyClassChecker 检查类或抽象类没有成员,则可以省略大括号
<check enabled="true" class="org.scalastyle.scalariform.EmptyClassChecker" level="warning"/>
org.scalastyle.scalariform.EmptyInterpolatedStringChecker 检查是否有对字符串插入空值
<check enabled="true" level="warning" class="org.scalastyle.scalariform.EmptyInterpolatedStringChecker"/>
org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker 检查某些既定标记后是否有空间
-
<check enabled="true" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" level="warning">
-
<parameters>
-
<parameter name="tokens">COLON, IF</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker 检查某些既定标记前是否有空间
-
<check enabled="true" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" level="warning">
-
<parameters>
-
<parameter name="tokens">LPAREN</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.EqualsHashCodeChecker 检查如果一个类实现了或等于Hash,那它应该实现另一个类
<check enabled="true" class="org.scalastyle.scalariform.EqualsHashCodeChecker" level="warning"/>
org.scalastyle.scalariform.FieldNamesChecker 检查字段名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.FieldNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter>
-
<parameter name="objectFieldRegex">^[A-Z][A-Za-z0-9]*$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.ForBraceChecker 检查for是否使用大括号
<check enabled="true" class="org.scalastyle.scalariform.ForBraceChecker" level="warning"/>
org.scalastyle.scalariform.IfBraceChecker 检查if是否使用大括号
-
<check enabled="true" class="org.scalastyle.scalariform.IfBraceChecker" level="warning">
-
<parameters>
-
<parameter name="singleLineAllowed">true</parameter>
-
<parameter name="doubleLineAllowed">false</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.IllegalImportsChecker 检查类没有导入某些类
<check enabled="true" class="org.scalastyle.scalariform.IllegalImportsChecker" level="warning"/>
org.scalastyle.scalariform.ImportGroupingChecker 检查导入是否分组
<check enabled="true" class="org.scalastyle.scalariform.ImportGroupingChecker" level="warning"/>
org.scalastyle.scalariform.ImportOrderChecker 检查是否根据样式配置对导入进行分组和排序
-
<check enabled="true" class="org.scalastyle.scalariform.ImportOrderChecker" level="warning">
-
<parameters>
-
<parameter name="groups">java,scala,others</parameter>
-
<parameter name="group.java">javax?\..+</parameter>
-
<parameter name="group.scala">scala\..+</parameter>
-
<parameter name="group.others">.+</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.LowercasePatternMatchChecker 检查case语句模式匹配是否为小写,因为这可能导致混淆
<check enabled="true" class="org.scalastyle.scalariform.LowercasePatternMatchChecker" level="warning"/>
org.scalastyle.scalariform.MagicNumberChecker 检查魔数是否使用var定义
-
<check enabled="true" class="org.scalastyle.scalariform.MagicNumberChecker" level="warning">
-
<parameters>
-
<parameter name="ignore">-1,0,1,2,3</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.MethodArgumentNamesChecker 检查方法参数名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.MethodArgumentNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter>
-
<parameter name="ignoreRegex">^$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.MethodLengthChecker 检查方法不超过最大长度
-
<check enabled="true" class="org.scalastyle.scalariform.MethodLengthChecker" level="warning">
-
<parameters>
-
<parameter name="maxLength">50</parameter>
-
<parameter name="ignoreComments">false</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.MethodNamesChecker 检查方法名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.MethodNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[A-Za-z]*$</parameter>
-
<parameter name="ignoreRegex">^.*$</parameter>
-
<parameter name="ignoreOverride">false</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.MultipleStringLiteralsChecker 检查字符串文字没有多次出现
-
<check enabled="true" class="org.scalastyle.scalariform.MultipleStringLiteralsChecker" level="warning">
-
<parameters>
-
<parameter name="allowed">1</parameter>
-
<parameter name="ignoreRegex">^\"\"$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.NamedArgumentChecker 检查参数是否命名
-
<check enabled="true" class="org.scalastyle.scalariform.NamedArgumentChecker" level="warning">
-
<parameters>
-
<parameter name="checkString">false</parameter>
-
<parameter name="ignoreMethod">^set.+$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.NoCloneChecker 检查类和对象没有定义clone()方法
<check enabled="true" class="org.scalastyle.scalariform.NoCloneChecker" level="warning"/>
org.scalastyle.scalariform.NoFinalizeChecker 检查类和对象是否定义了Finish()方法
<check enabled="true" class="org.scalastyle.scalariform.NoFinalizeChecker" level="warning"/>
org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker 检查左括号‘[’后没有空格
<check enabled="true" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" level="warning"/>
org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker 检查左括号‘[’之前没有空格
<check enabled="true" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" level="warning"/>
org.scalastyle.scalariform.NoWhitespaceBeforeRightBracketChecker 检查右括号“]”之前没有空格
<check enabled="true" class="org.scalastyle.scalariform.NoWhitespaceBeforeRightBracketChecker" level="warning"/>
org.scalastyle.scalariform.NonASCIICharacterChecker 检查是否使用非ASCII字符(Unicode字符)
<check enabled="true" class="org.scalastyle.scalariform.NonASCIICharacterChecker" level="warning"/>
org.scalastyle.scalariform.NotImplementedErrorUsage 检查代码是否有 ??? 操作符
<check enabled="true" class="org.scalastyle.scalariform.NotImplementedErrorUsage" level="warning"/>
org.scalastyle.scalariform.NullChecker 检查是否使用NULL
-
<check enabled="true" class="org.scalastyle.scalariform.NullChecker" level="warning">
-
<parameters>
-
<parameter name="allowNullChecks">true</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.NumberOfMethodsInTypeChecker 检查一个类/特性/对象是否申明太多的方法
-
<check enabled="true" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" level="warning">
-
<parameters>
-
<parameter name="maxMethods">30</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.NumberOfTypesChecker 检查文件中声明的类型是否过多
-
<check enabled="true" class="org.scalastyle.scalariform.NumberOfTypesChecker" level="warning">
-
<parameters>
-
<parameter name="maxTypes">20</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.ObjectNamesChecker 检查对象名称是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.ObjectNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[A-Z][A-Za-z]*$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.OverrideJavaChecker 检查java@重写是否被使用
<check enabled="true" class="org.scalastyle.scalariform.OverrideJavaChecker" level="warning"/>
org.scalastyle.scalariform.PackageNamesChecker 检查包名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.PackageNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[a-z][A-Za-z]*$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.PackageObjectNamesChecker 检查包对象名是否与正则表达式匹配
-
<check enabled="true" class="org.scalastyle.scalariform.PackageObjectNamesChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[a-z][A-Za-z]*$</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.ParameterNumberChecker 检查方法的参数个数是否超过设置数量
-
<check enabled="true" class="org.scalastyle.scalariform.ParameterNumberChecker" level="warning">
-
<parameters>
-
<parameter name="maxParameters">8</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.PatternMatchAlignChecker 检查模式匹配箭头对齐
<check enabled="true" class="org.scalastyle.scalariform.PatternMatchAlignChecker" level="warning"/>
org.scalastyle.scalariform.ProcedureDeclarationChecker 检查申明过程 a:unit= 是否使用=号
<check enabled="true" class="org.scalastyle.scalariform.ProcedureDeclarationChecker" level="warning"/>
org.scalastyle.scalariform.PublicMethodsHaveTypeChecker 检查方法是否具有显式返回类型
-
<check enabled="true" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" level="warning">
-
<parameters>
-
<parameter name="ignoreOverride">false</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.RedundantIfChecker 检查表达式是否是冗余,如,if (cond) false else true
<check enabled="true" class="org.scalastyle.scalariform.RedundantIfChecker" level="warning"/>
org.scalastyle.scalariform.ReturnChecker 检查是否使用return
<check enabled="true" class="org.scalastyle.scalariform.ReturnChecker" level="warning"/>
org.scalastyle.scalariform.ScalaDocChecker 检查代码格式是否遵循Scaladoc文档说明
-
<check enabled="true" class="org.scalastyle.scalariform.ScalaDocChecker" level="warning">
-
<parameters>
-
<parameter name="ignoreRegex">(.*Spec$)|(.*SpecIT$)</parameter>
-
<parameter name="ignoreTokenTypes">PatDefOrDcl,TypeDefOrDcl,FunDefOrDcl,TmplDef</parameter>
-
<parameter name="ignoreOverride">false</parameter>
-
<parameter name="indentStyle">anydoc</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.SimplifyBooleanExpressionChecker 检查Boolean表达式是否可以简化
<check enabled="true" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" level="warning"/>
org.scalastyle.scalariform.SpaceAfterCommentStartChecker 检查在注释后是否有一个空格
<check enabled="true" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" level="warning"/>
org.scalastyle.scalariform.SpacesAfterPlusChecker 检查加号后面是否有空格
<check enabled="true" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" level="warning"/>
org.scalastyle.scalariform.SpacesBeforePlusChecker 检查加号前面是否有空格
<check enabled="true" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" level="warning"/>
org.scalastyle.scalariform.StructuralTypeChecker 检查结构类型是否未被使用
<check enabled="true" class="org.scalastyle.scalariform.StructuralTypeChecker" level="warning"/>
org.scalastyle.scalariform.TodoCommentChecker 检查是否使用Todo/Fixme单行注释
-
<check enabled="true" class="org.scalastyle.scalariform.TodoCommentChecker" level="warning">
-
<parameters>
-
<parameter default="TODO|FIXME" type="string" name="words"/>
-
</parameters>
-
</check>
org.scalastyle.scalariform.TokenChecker 检查如果有正则表达式,是否在特殊标记中匹配
-
<check enabled="true" class="org.scalastyle.scalariform.TokenChecker" level="warning">
-
<parameters>
-
<parameter name="regex">^[ai]sInstanceOf$</parameter>
-
</parameters>
-
<customMessage>Avoid casting.</customMessage>
-
</check>
org.scalastyle.scalariform.UnderscoreImportChecker 检查是否使用通配符导入
-
<check enabled="true" class="org.scalastyle.scalariform.UnderscoreImportChecker" level="warning">
-
<parameters>
-
<parameter name="ignoreRegex">collection\.JavaConverters\._|scala\.concurrent\.duration\._</parameter>
-
</parameters>
-
</check>
org.scalastyle.scalariform.UppercaseLChecker 检查如果使用长字符串,则使用大写字母
<check enabled="true" class="org.scalastyle.scalariform.UppercaseLChecker" level="warning"/>
org.scalastyle.scalariform.VarFieldChecker 检查类和对象是否定义可变字段
<check enabled="true" class="org.scalastyle.scalariform.VarFieldChecker" level="warning"/>
org.scalastyle.scalariform.VarLocalChecker 检查函数是否定义可变变量
<check enabled="true" class="org.scalastyle.scalariform.VarLocalChecker" level="warning"/>
org.scalastyle.scalariform.WhileChecker 检查是否使用While循环
<check enabled="true" class="org.scalastyle.scalariform.WhileChecker" level="warning"/>
org.scalastyle.scalariform.XmlLiteralChecker 检查是否未使用xml文本
<check enabled="true" class="org.scalastyle.scalariform.XmlLiteralChecker" level="warning"/>
Maven集成Scalastyle
如Spark的pom.xml中集成Scalastyle。
-
<build>
-
<plugins>
-
...
-
<plugin>
-
<groupId>org.scalastyle</groupId>
-
<artifactId>scalastyle-maven-plugin</artifactId>
-
<version>1.0.0</version>
-
<configuration>
-
<verbose>false</verbose>
-
<failOnViolation>true</failOnViolation>
-
<includeTestSourceDirectory>false</includeTestSourceDirectory>
-
<failOnWarning>false</failOnWarning>
-
<sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
-
<testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
-
<configLocation>scalastyle-config.xml</configLocation>
-
<outputFile>${basedir}/target/scalastyle-output.xml</outputFile>
-
<inputEncoding>${project.build.sourceEncoding}</inputEncoding>
-
<outputEncoding>${project.reporting.outputEncoding}</outputEncoding>
-
</configuration>
-
<executions>
-
<execution>
-
<goals>
-
<goal>check</goal>
-
</goals>
-
</execution>
-
</executions>
-
</plugin>
-
...
-
</plugins>
-
</build>
也可以将<sourceDirectories>设置多个目录。
-
<sourceDirectories>
-
<dir>${project.basedir}/src/main/scala</dir>
-
<dir>${project.basedir}/src/main/generated-scala</dir>
-
</sourceDirectories>
IDEA下可以设置风格检测
Spark2.4.3 的 Scalastyle-config.xml
-
If you wish to turn off checking for a section of code, you can put a comment in the source
-
before and after the section, with the following syntax:
-
-
// scalastyle:off
-
... // stuff that breaks the styles
-
// scalastyle:on
-
-
You can also disable only one rule, by specifying its rule id, as specified in:
-
http://www.scalastyle.org/rules-0.7.0.html
-
-
// scalastyle:off no.finalize
-
override def finalize(): Unit = ...
-
// scalastyle:on no.finalize
-
-
This file is divided into 3 sections:
-
(1) rules that we enforce.
-
(2) rules that we would like to enforce, but haven't cleaned up the codebase to turn on yet
-
(or we need to make the scalastyle rule more configurable).
-
(3) rules that we don't want to enforce.
-
-->
-
-
<scalastyle>
-
<name>Scalastyle standard configuration</name>
-
-
<!-- ================================================================================ -->
-
<!-- rules we enforce -->
-
<!-- ================================================================================ -->
-
-
<check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.file.HeaderMatchesChecker" enabled="true">
-
<parameters>
-
<parameter name="header"><![CDATA[/*
-
* Licensed to the Apache Software Foundation (ASF) under one or more
-
* contributor license agreements. See the NOTICE file distributed with
-
* this work for additional information regarding copyright ownership.
-
* The ASF licenses this file to You under the Apache License, Version 2.0
-
* (the "License"); you may not use this file except in compliance with
-
* the License. You may obtain a copy of the License at
-
*
-
* http://www.apache.org/licenses/LICENSE-2.0
-
*
-
* Unless required by applicable law or agreed to in writing, software
-
* distributed under the License is distributed on an "AS IS" BASIS,
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
* See the License for the specific language governing permissions and
-
* limitations under the License.
-
*/]]></parameter>
-
</parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
-
<parameters>
-
<parameter name="maxLineLength"><![CDATA[100]]></parameter>
-
<parameter name="tabSize"><![CDATA[2]]></parameter>
-
<parameter name="ignoreImports">true</parameter>
-
</parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
-
<parameters><parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter></parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
-
<parameters><parameter name="regex"><![CDATA[(config|[A-Z][A-Za-z]*)]]></parameter></parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
-
<parameters><parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter></parameters>
-
</check>
-
-
<check customId="argcount" level="error" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
-
<parameters><parameter name="maxParameters"><![CDATA[10]]></parameter></parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.StructuralTypeChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
-
<parameters>
-
<parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
-
<parameter name="doubleLineAllowed"><![CDATA[true]]></parameter>
-
</parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"></check>
-
-
<check customId="nonascii" level="error" class="org.scalastyle.scalariform.NonASCIICharacterChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" enabled="true">
-
<parameters>
-
<parameter name="tokens">ARROW, EQUALS, ELSE, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
-
</parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" enabled="true">
-
<parameters>
-
<parameter name="tokens">ARROW, EQUALS, COMMA, COLON, IF, ELSE, DO, WHILE, FOR, MATCH, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
-
</parameters>
-
</check>
-
-
<!-- ??? usually shouldn't be checked into the code base. -->
-
<check level="error" class="org.scalastyle.scalariform.NotImplementedErrorUsage" enabled="true"></check>
-
-
<!-- As of SPARK-7558, all tests in Spark should extend o.a.s.SparkFunSuite instead of FunSuite directly -->
-
<check customId="funsuite" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
-
<parameters><parameter name="regex">^FunSuite[A-Za-z]*$</parameter></parameters>
-
<customMessage>Tests must extend org.apache.spark.SparkFunSuite instead.</customMessage>
-
</check>
-
-
<!-- As of SPARK-7977 all printlns need to be wrapped in '// scalastyle:off/on println' -->
-
<check customId="println" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
-
<parameters><parameter name="regex">^println$</parameter></parameters>
-
<customMessage><![CDATA[Are you sure you want to println? If yes, wrap the code block with
-
// scalastyle:off println
-
println(...)
-
// scalastyle:on println]]></customMessage>
-
</check>
-
-
<check customId="hadoopconfiguration" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">spark(.sqlContext)?.sparkContext.hadoopConfiguration</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use sparkContext.hadoopConfiguration? In most cases, you should use
-
spark.sessionState.newHadoopConf() instead, so that the hadoop configurations specified in Spark session
-
configuration will come into effect.
-
If you must use sparkContext.hadoopConfiguration, wrap the code block with
-
// scalastyle:off hadoopconfiguration
-
spark.sparkContext.hadoopConfiguration...
-
// scalastyle:on hadoopconfiguration
-
]]></customMessage>
-
</check>
-
-
<check customId="visiblefortesting" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">@VisibleForTesting</parameter></parameters>
-
<customMessage><![CDATA[
-
@VisibleForTesting causes classpath issues. Please note this in the java doc instead (SPARK-11615).
-
]]></customMessage>
-
</check>
-
-
<check customId="runtimeaddshutdownhook" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">Runtime\.getRuntime\.addShutdownHook</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use Runtime.getRuntime.addShutdownHook? In most cases, you should use
-
ShutdownHookManager.addShutdownHook instead.
-
If you must use Runtime.getRuntime.addShutdownHook, wrap the code block with
-
// scalastyle:off runtimeaddshutdownhook
-
Runtime.getRuntime.addShutdownHook(...)
-
// scalastyle:on runtimeaddshutdownhook
-
]]></customMessage>
-
</check>
-
-
<check customId="mutablesynchronizedbuffer" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">mutable\.SynchronizedBuffer</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use mutable.SynchronizedBuffer? In most cases, you should use
-
java.util.concurrent.ConcurrentLinkedQueue instead.
-
If you must use mutable.SynchronizedBuffer, wrap the code block with
-
// scalastyle:off mutablesynchronizedbuffer
-
mutable.SynchronizedBuffer[...]
-
// scalastyle:on mutablesynchronizedbuffer
-
]]></customMessage>
-
</check>
-
-
<check customId="classforname" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">Class\.forName</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use Class.forName? In most cases, you should use Utils.classForName instead.
-
If you must use Class.forName, wrap the code block with
-
// scalastyle:off classforname
-
Class.forName(...)
-
// scalastyle:on classforname
-
]]></customMessage>
-
</check>
-
-
<check customId="awaitresult" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">Await\.result</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use Await.result? In most cases, you should use ThreadUtils.awaitResult instead.
-
If you must use Await.result, wrap the code block with
-
// scalastyle:off awaitresult
-
Await.result(...)
-
// scalastyle:on awaitresult
-
]]></customMessage>
-
</check>
-
-
<check customId="awaitready" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">Await\.ready</parameter></parameters>
-
<customMessage><![CDATA[
-
Are you sure that you want to use Await.ready? In most cases, you should use ThreadUtils.awaitReady instead.
-
If you must use Await.ready, wrap the code block with
-
// scalastyle:off awaitready
-
Await.ready(...)
-
// scalastyle:on awaitready
-
]]></customMessage>
-
</check>
-
-
<!-- As of SPARK-9613 JavaConversions should be replaced with JavaConverters -->
-
<check customId="javaconversions" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
-
<parameters><parameter name="regex">JavaConversions</parameter></parameters>
-
<customMessage>Instead of importing implicits in scala.collection.JavaConversions._, import
-
scala.collection.JavaConverters._ and use .asScala / .asJava methods</customMessage>
-
</check>
-
-
<check customId="commonslang2" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
-
<parameters><parameter name="regex">org\.apache\.commons\.lang\.</parameter></parameters>
-
<customMessage>Use Commons Lang 3 classes (package org.apache.commons.lang3.*) instead
-
of Commons Lang 2 (package org.apache.commons.lang.*)</customMessage>
-
</check>
-
-
<check customId="extractopt" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
-
<parameters><parameter name="regex">extractOpt</parameter></parameters>
-
<customMessage>Use jsonOption(x).map(.extract[T]) instead of .extractOpt[T], as the latter
-
is slower. </customMessage>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.ImportOrderChecker" enabled="true">
-
<parameters>
-
<parameter name="groups">java,scala,3rdParty,spark</parameter>
-
<parameter name="group.java">javax?\..*</parameter>
-
<parameter name="group.scala">scala\..*</parameter>
-
<parameter name="group.3rdParty">(?!org\.apache\.spark\.).*</parameter>
-
<parameter name="group.spark">org\.apache\.spark\..*</parameter>
-
</parameters>
-
</check>
-
-
<check level="error" class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" enabled="true">
-
<parameters>
-
<parameter name="tokens">COMMA</parameter>
-
</parameters>
-
</check>
-
-
<!-- SPARK-3854: Single Space between ')' and '{' -->
-
<check customId="SingleSpaceBetweenRParenAndLCurlyBrace" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">\)\{</parameter></parameters>
-
<customMessage><![CDATA[
-
Single Space between ')' and `{`.
-
]]></customMessage>
-
</check>
-
-
<check customId="NoScalaDoc" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">(?m)^(\s*)/[*][*].*$(\r|)\n^\1 [*]</parameter></parameters>
-
<customMessage>Use Javadoc style indentation for multiline comments</customMessage>
-
</check>
-
-
<check customId="OmitBracesInCase" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
-
<parameters><parameter name="regex">case[^\n>]*=>\s*\{</parameter></parameters>
-
<customMessage>Omit braces in case clauses.</customMessage>
-
</check>
-
-
<!-- SPARK-16877: Avoid Java annotations -->
-
<check level="error" class="org.scalastyle.scalariform.OverrideJavaChecker" enabled="true"></check>
-
-
<check level="error" class="org.scalastyle.scalariform.DeprecatedJavaChecker" enabled="true"></check>
-
-
<!-- ================================================================================ -->
-
<!-- rules we'd like to enforce, but haven't cleaned up the codebase yet -->
-
<!-- ================================================================================ -->
-
-
<!-- We cannot turn the following two on, because it'd fail a lot of string interpolation use cases. -->
-
<!-- Ideally the following two rules should be configurable to rule out string interpolation. -->
-
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" enabled="false"></check>
-
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" enabled="false"></check>
-
-
<!-- This breaks symbolic method names so we don't turn it on. -->
-
<!-- Maybe we should update it to allow basic symbolic names, and then we are good to go. -->
-
<check level="error" class="org.scalastyle.scalariform.MethodNamesChecker" enabled="false">
-
<parameters>
-
<parameter name="regex"><![CDATA[^[a-z][A-Za-z0-9]*$]]></parameter>
-
</parameters>
-
</check>
-
-
<!-- Should turn this on, but we have a few places that need to be fixed first -->
-
<check level="error" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="true"></check>
-
-
<!-- ================================================================================ -->
-
<!-- rules we don't want -->
-
<!-- ================================================================================ -->
-
-
<check level="error" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="false">
-
<parameters><parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter></parameters>
-
</check>
-
-
<!-- We want the opposite of this: NewLineAtEofChecker -->
-
<check level="error" class="org.scalastyle.file.NoNewLineAtEofChecker" enabled="false"></check>
-
-
<!-- This one complains about all kinds of random things. Disable. -->
-
<check level="error" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" enabled="false"></check>
-
-
<!-- We use return quite a bit for control flows and guards -->
-
<check level="error" class="org.scalastyle.scalariform.ReturnChecker" enabled="false"></check>
-
-
<!-- We use null a lot in low level code and to interface with 3rd party code -->
-
<check level="error" class="org.scalastyle.scalariform.NullChecker" enabled="false"></check>
-
-
<!-- Doesn't seem super big deal here ... -->
-
<check level="error" class="org.scalastyle.scalariform.NoCloneChecker" enabled="false"></check>
-
-
<!-- Doesn't seem super big deal here ... -->
-
<check level="error" class="org.scalastyle.file.FileLengthChecker" enabled="false">
-
<parameters><parameter name="maxFileLength">800></parameter></parameters>
-
</check>
-
-
<!-- Doesn't seem super big deal here ... -->
-
<check level="error" class="org.scalastyle.scalariform.NumberOfTypesChecker" enabled="false">
-
<parameters><parameter name="maxTypes">30</parameter></parameters>
-
</check>
-
-
<!-- Doesn't seem super big deal here ... -->
-
<check level="error" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" enabled="false">
-
<parameters><parameter name="maximum">10</parameter></parameters>
-
</check>
-
-
<!-- Doesn't seem super big deal here ... -->
-
<check level="error" class="org.scalastyle.scalariform.MethodLengthChecker" enabled="false">
-
<parameters><parameter name="maxLength">50</parameter></parameters>
-
</check>
-
-
<!-- Not exactly feasible to enforce this right now. -->
-
<!-- It is also infrequent that somebody introduces a new class with a lot of methods. -->
-
<check level="error" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" enabled="false">
-
<parameters><parameter name="maxMethods"><![CDATA[30]]></parameter></parameters>
-
</check>
-
-
<!-- Doesn't seem super big deal here, and we have a lot of magic numbers ... -->
-
<check level="error" class="org.scalastyle.scalariform.MagicNumberChecker" enabled="false">
-
<parameters><parameter name="ignore">-1,0,1,2,3</parameter></parameters>
-
</check>
-
-
</scalastyle>
---------------------
作者:心有余力
来源:CSDN
原文:https://blog.csdn.net/lingeio/article/details/98388211
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件