记录下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&