🚀

コードの問題箇所を指摘してくれる VsCode 拡張機能 SonarLint を試す

2022/12/06に公開

前書き

ネットサーフィン中にたまたま見つけた VsCode 用 SonarLint なる拡張機能を試してみました。
試してみたとは言いつつ、実はもう1ヶ月位使っていて、すっかりお気に入りになっています。
なんて言うか、「VsCode の中にいる私のメンタ」みたいな😅

で、SonarLint は何かと言うと、ちょっとイケてない書き方や問題のある書き方をリアルタイムに指摘してくれる拡張機能です。
対応言語は、C, C++, HTML, Java, JavaScript, PHP, Python and TypeScript となっています。以降、本記事では、PHP でサンプルを載せています。

↓サイトへのリンク
https://github.com/SonarSource/sonarlint-vscode
https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode

インストール

他の拡張機能と同様にインストールできると思われます。ただ、Java Runtime を必要とします。
OS が、Windows、macOS、Linux であれば、一緒に同梱されていると書いてあるので、一緒にインストールされるのでしょうか。(私の場合、Java Runtime は、元々インストール済みでした)

Java Runtime は、たまに脆弱性が見つかるので、常に最新にするようにしておきましょう。

また、SonarQube サーバなる製品などもありますが、取りあえず、PHP で使用する分には、その辺は無くても大丈夫です。また、JavaScript や TypeScript で使うには、 Node.js の実行ファイルが必要とも書かれています。適宜、使用する言語に応じて、サイトでご確認下さい。

本題

PHP で言うと、PHP CS Fixer とか PHPStan とか、イケてない箇所や問題箇所を見つけてくれるツールはありますが、SonarLint もその1つと言えます。ですが、それらとはまた違った部分を指摘してくれます(被る部分もあります)。

指摘された箇所は、場合によってはバグかも知れません。また、セキュリティ上問題のある書き方何かの指摘もあるようです。

指摘してくれるルールはこちら。(PHPの場合、全部で269個)
https://rules.sonarsource.com/php

と言うことで、以下、幾つか分かり易いサンプルを載せてみました。

例1


以下は人間による超意訳。

  • 余分なスペースはカットしてね。
  • そこは、スペース入れなよ。

(インデントまでは指摘は無いようです)

例2

  • デフォルト付き引数は、後にしなよ。
  • この if 文、上のと一緒にしなよ。

例3

  • この関数の return の返却値、一貫性無くない?
  • おや?この文、40行目と重複してますよ。
  • この return 文、意味無いっすよ。

例4

  • この変数、使われて無いっすよ。

(バグが発見できる)

例5

  • このメソッド return 多すぎでしょ。3つまでにしときなよ。

例6

  • 関数名は、ローワーキャメルケースで書きなよ。
  • そんな一般的なのではなく、より特化した例外を投げなよ。

例7

  • 変数なんかに格納しないで、return に直に書きなよ。
  • ここのコード、絶対実行されないよ。
  • この最後の ?> は、取り除きなよ。

補足

カーソルをエラーのある波線に移動し、左端に表示された電球をクリックするか、又はショートカットキー(Windows の場合、Ctrl + .)をクリックすると、下記みたいに表示されます。

ポップアップ表示された1行目をクリックすると、より詳しい解説が見られます。2行目は、そのルールを無視するよう設定ファイルに書き込みます。

雑感

PhpStorm とかだと、コードインスペクションという機能がこれに該当するのでしょうか。デフォルトでこの機能が付いている所は、流石ですね。

と言うことで、これでバグとか減らせると嬉しいですね。

それでは、楽しい開発ライフを!🍷

Discussion