2019.10.28

Visual Studio Code開発環境で役立つエクステンション機能について(その4)

はじめに

前回に引き続き、今回もVisual Studio Codeでの開発を助けてくれるエクステンション機能をご紹介します。

最後となる今回は、コードの品質を高めてくれるPMD機能を実現する「Apex PMD」を中心に進めていきたいと思います。

※以下の内容は、Windows10 環境を前提とし、すべて本稿執筆時点(2019/10/03)のバージョンでのものとなります。

Apex PMD

PMDとは(主にJAVAにおいて)ソースコードの解析をおこない、無駄な変数、ループ、条件式、バグの原因となる可能性のあるコードの判定を行ってくれるツールです。

参照:Wikipedia PMD (ソフトウェア) 
https://ja.wikipedia.org/wiki/PMD_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)

他の言語においてはコンパイル時にコンパイラがヒントや警告のような形で表示してくれたりしますが、それに相当する機能を実現するツールと言って良いでしょう。

このApex PMDはApexコードでソースの分析を行ってくれるエクステンションです。

使い方

Visual Studio Code の Extentions メニューからインストールします。
インストール後、画面右下のステータスバーに「Apex PMD」の文字が表示されるようになります。

Apexクラスファイルを編集中に、「Ctrl+Shift+P」でコマンドパレットを開き、任意のコマンドを実行します。設定によりファイルのオープン時、保存時などに自動で実行されるかどうか設定することも可能です。

コマンドは以下の通り3種類あります。
コマンド 内容
Apex Static Analystic :On Workspace 現在のワークスペースで参照している組織全体のコードを解析します。
Apex Static Analystic :On File 現在のファイル、あるいは指定したファイルの解析を行います。
Apex Static Analystic :Clear Problems コンソールに表示されている問題点メッセージをクリアします。
試しに実行してみましょう。
下記のような適当に書いた Apexクラスのファイルを作成して「Apex Static Analystic :On File」を実行してみます。
※筆者の環境ではワークスペースのパス名に日本語が含まれている場合、うまく動きませんでしたので注意して下さい。
public class testClass {
   
   private void method1(){
       integer a, b, c = 0; 
       User u = [Select id from User Limit 1];

       if (a == 1) {
        b = 3;
       }
       string  aaaaaa = '';
 } 
}
testClass.cls
解析コマンドを実行すると、右下のステータスバーの「Apex PMD」の横に時計アイコンが表示がされます。表示されている間はコードの解析が行われていますので、そのまま待っていてください。

解析が完了して特に問題がなければ、チェックマークが表示されます。

問題が見つかった場合は、警告マークが表示されコンソール内に問題点が表示されます。

問題点を指摘するメッセージは、残念ながら英語です。
それでは、上から順を追って見ていきましょう。
Class names should begin with an uppercase character (rule: Code Style-ClassNamingConventions)
See: https://pmd.github.io/latest/pmd_rules_apex_code style.html#classnamingconventions
クラス名は大文字で始まるべきである、と指摘されているようです。

メッセージをクリックすると、コード内の問題が発生している箇所を示してくれます。

Use one statement for each line, it enhances code readability. (rule: Code Style-OneDeclarationPerLine)
See: https://pmd.github.io/latest/pmd_rules_apex_code style.html#onedeclarationperline
1行で複数の変数をまとめて宣言しているのを指摘されているようです。

Validate CRUD permission before SOQL/DML operation (rule: Security-ApexCRUDViolation)
See: https://pmd.github.io/latest/pmd_rules_apex_security.html#apexcrudviolation
SOQL / DML操作の前にCRUD権限を検証するべきだという指摘です。


メッセージのあとのURLには、ルールについて詳細な解説が記載されています。
執筆現在、表示されるURLの一部に不具合があり、うまく開くけない場合があります。
その場合は、下記のURLから調べてください。解析に使われるルールがすべて記載されています。

https://pmd.github.io/latest/pmd_rules_apex.html
あくまでツールはツールですので、見つかった問題点を全て解消しなければならないかと言われると必ずしもそうではないと筆者は考えますが、ソースの品質を保つための一つの指標として、本機能を活用するのは非常に有効だと思います。

Codey High Noon

記事の尺が足りなかったのでおまけです。

泣く子も黙るSalesforceの公式のテーマです。

Visual Studio Code の Extentions メニューからインストールします。
インストール後、特に設定項目はありません。
画面左下の設定アイコンをクリックしてメニューから「配色テーマ」を選択。
配色テーマ一覧から「Codey High Noon」を選択してください。

Apex や Visualforce の開発に最適化された(多分)カラーテーマとなっています。

Codey Midnight

泣く子も黙る Salesforce の公式のテーマその2です。

前述の Codey High Noon がライトテーマだったのに対して、こちらはダークテーマとなっています。

おわりに

全4回に渡りご紹介してきましたが、いかがでしたでしょうか。

Salesforceの開発に限らずですが、各エクステンションを活用することによって、開発時間を大幅に短縮したり、コードの品質をぐっと高めることができるようになります。
この他にもたくさんのエクステンションが Visual Studio Code には存在しますし、新しいエクステンションも日々登場していますので、面倒に感じた操作などは代わりにやってくれるエクステンションを探してみるのも良いのではないでしょうか。

以上となります。それでは!
36 件
     
  • banner
  • banner

関連する記事