Scalastyle:メッセージ→対処法の逆引きリスト

More than 1 year has passed since last update.

Scalastyleを使ってScalaコードをlintしていると警告メッセージが出ますが、メッセージからその対処法の逆引きがあったらいいなと思ったのでまとめておきます。少しずつ足していこうと思います。ちなみにエラーメッセージのソースはscalastyle/reference.conf at master · scalastyle/scalastyleにまとまってます。Scalastyleのチェッククラス一覧 - Qiitaも参考に。

Header does not match expected text (header.matches)

クラス: org.scalastyle.file.HeaderMatchesChecker
原因: ファイルのヘッダに指定のコピーライトなどのテキストが入っていない。
対応: scalastyle-config.xmlの<parameter name="header">に定義したテキストを追加する。

Public method must have explicit type (public.methods.have.type)

クラス: org.scalastyle.scalariform.PublicMethodsHaveTypeChecker
原因: パブリックメソッドに戻り値の型を明示していない。
対応: 型を明示する。

対応例
-def foo = 1
+def foo: Int = 1

Magic Number (magic.number)

クラス: org.scalastyle.scalariform.MagicNumberChecker
原因: マジックナンバーを使っている。
対応: マジックナンバーをvalに代入する。

対応例
-var anHour = 3600
+val anHour = 3600

※Scalastyleではval変数はマジックナンバーと評価されないが、一方var変数はマジックナンバーと判断される。

Regular expression matched (regex)

クラス: org.scalastyle.file.RegexChecker
原因: 正規表現にマッチしたコードが存在するため。
対応: 正規表現にマッチしないようにコードを修正する。

対応例
-println(value)

Regular expression matched ''{0}'' in a token (token)

クラス: org.scalastyle.scalariform.TokenChecker
原因: 正規表現にマッチするトークンが存在するため。
対応: 正規表現にマッチしないようにコードを修正する。

対応例
-println(value)

Avoid mutable fields (var.field)

クラス: org.scalastyle.scalariform.VarFieldChecker
原因: クラスやオブジェクトにvarのフィールドがある。
対応: varフィールドをvalにする。

対応例
class Foo {
-var bar = 1
+val bar = 1
}

Avoid wildcard imports (underscore.import)

クラス: org.scalastyle.scalariform.UnderscoreImportChecker
原因: ワイルドカードを使ってインポートしている。
対応: 必要なクラスのみインポートするようにする。

対応例
-import org.joda.time._
+import org.joda.time.{ DateTimeZone, DateTime }

Cyclomatic complexity of 11 exceeds max of 10 (cyclomatic.complexity)

クラス: org.scalastyle.scalariform.CyclomaticComplexityChecker
原因: メソッドの循環的複雑度が規定値を超えたため。
対応: メソッドを分割するなど、リファクタリングが必要。

Type parameter does not match '{0}' (class.type.parameter.name)

クラス: org.scalastyle.scalariform.ClassTypeParameterChecker
原因: 型パラメータの名前が正規表現にマッチしないため。
対応: 型パラメータ名を正規表現のパターンにマッチする形式に修正する