IT

【SpringBoot開発】LSC_LITERAL_STRING_COMPARISONを解消する

はらじょ

こんにちは、新卒で未経験からITエンジニアになり、毎日Javaをゴリゴリ書いているはらじょです。

最近はSpringBootでバッチ開発を行っています。

 

自分が開発したコードが適切か(カジュアルに言うとイケているコードか?)を調べる手段として、「gradlew build」を実行することがありますよね。スタイルや無駄な条件分岐など教えてくれる便利なコマンドです。

今回は私がgradlew build実行時に遭遇したバグについての備忘録です。同じような箇所でハマってしまう方 & 未来の自分のためになれば嬉しいです。

 

LSC_LITERAL_STRING_COMPARISON

バグの内容

バグとしては、下記の通り。

#Spotbugs Report
## LSC_LITERAL_STRING_COMPARISON
“`text

This line is in the form of
String str = ..
str.equals(“somethingOtherSting”);
//or
str.compareTo(“someOtherString”);

A NullPointException may occur if the String variable str is null.
If instead the code was restructured to
String str = “someOtherString”.equals(str);
//or
“someOtherString”.compareTo(str);

That is, call equals() or compareTo() on the sting literal, passing the variable as an argument, then this exception could never happen as both euals() and compareTo() check for null.

“`

 

バグのざっくり和訳

## LSC_LITERAL_STRING_COMPARISON [文字列の比較]

This line is in the form of [この行は次の形である]
String str = ..
str.equals(“somethingOtherSting”); [文字列変数 str = 文字列.equals(何か他の文字列)]
//or [または]
str.compareTo(“someOtherString”); [文字列変数 str = 文字列.compareTo(何か他の文字列)]

A NullPointException may occur if the String variable str is null. [文字列変数strがnullの場合、ヌルポが起こるかもしれない]

That is, call equals() or compareTo() on the sting literal, passing the variable as an argument, then this exception could never happen as both euals() and compareTo() check for null.[つまり、文字列で equals()またはcompareTo() を呼び出し、変数を引数として渡すと、euals() と compareTo() はnull をチェックするため、この例外は発生しません。]

 

バグの解釈

「NullPointException(通称ヌルポ)が起きないような書き方をしなさい」と怒られています。
ヌルポは、コード実行時の異常です。

今回の場合でいうと、
×変数.equals(文字列)
〇文字列.equals(変数)
にしなさいということですね。

「Null.equals()にすると、エラー起きるよ!」と諭してくれているわけです。

 

checkstyleMain

バグの内容

>Task :CheckstyleMain

[ant:checkstyle][WARN] ファイルのパス : JavaDoc???????????? [SummaryJavadoc]

Checkstyle fieswith violations : 1

Checkstyle vilations by severity: [warning:9]

 

>Task :spotbugMain

 

バグの解釈

このバグはメソッドの定義の日本語に「。」を付けることにより解消。

表記を統一したほうがいいってことなのかな?

 

ABOUT ME
はらじょ
はらじょ
ITエンジニア
記事URLをコピーしました