Salesforce Code Analyzer v5使ってみた

Salesforceが提供している静的コード解析ツールであるSalesforce Code Analyzerについて最新バージョンであるv5準拠でご紹介します。

はじめに

こんにちは、テラスカイのT.Oです!
Salesforce開発を進めていくと、標準機能のカスタマイズに加えてApexやLWCを用いた個別開発も少なからず発生します。そして、規模が拡大するにつれ増えるコードレビューの負担や品質維持のコストはプロジェクトにおける課題の1つかと思います。

そこで役に立つのが、Salesforceが提供しているコード解析ツールであるSalesforce Code Analyzerです。
本記事ではSalesforce Code Analyzerのセットアップから基本的な使い方までを紹介いたします。

また、本記事は2025年4月にリリースされたSalesforce Code Analyzer v5に基づいた内容となります。v4からの変更点についてもまとめているので以前使ったことのある方も読んでいただけますと嬉しいです。

Salesforce Code Analyzerとは?

Salesforce Code Analyzerは、Salesforceが提供しているSalesforceプラットフォーム向けに設計された統合型のコード解析ツールです。Salesforce Code AnalyzerではApexクラス、LWC等に対して品質・パフォーマンス・セキュリティといった複数の観点からコードの構文や構造の問題を検出します。

裏側では複数のエンジンが統合されており、1回のコマンド実行で多角的な解析を実行できます。
主な分析エンジンは以下です。
・PMD:Apexコードの構文・設計・ガバナ制限違反の検出
・ESLint:LWCやJavaScriptコードの品質・構文チェック
・CPD: ファイル間の重複ブロックを識別

現在でもアップデートがされており、2025年4月にはメジャーアップデートが実施されSalesforce Code Analyzer v5がリリースされました。

V5へのアップデート

冒頭でも書いていたように、今回ご紹介する内容は2025年4月にリリースされた最新の Salesforce Code Analyzer v5 に基づいた内容になります。
v5 ではコマンド体系の見直しをはじめとして、多くの大きな変更が加えられました。
ここでは、v4 から v5 へのアップデートで何が変わったのか を中心に主な変更点をまとめていきます。

CLIが「sf」ベースに移行
これまで Code Analyzer は 「sfdx」 コマンドとして提供されていましたが、v5 からは 「sf」 コマンド に完全統合されました。
この変更によりコマンド体系が以下のように変更になります。
v4 v5
sfdx scanner:run sf code-analyzer run
設定ファイルの統一
v4までは .scanner-config.json や .pmdruleset.xml など分析エンジンごとに設定ファイルを分ける必要がありましたが、v5からは code-analyzer.yml にすべての設定をまとめられるようになりました。


分析エンジンの追加
v5では、従来の PMD(Apex, Visualforce)や ESLint(LWC, JS)に加えて、Flow(フローの分析) や Regex(正規表現ベースの分析)に対応しました。
これにより、コードだけでなく 設定要素(フロー、ルール名、正規表現ベースの検出) にもスキャン対象が拡大しています。


以上がv5へのアップデートでの主な変更点になります。
マイナーアップデートやパッチアップデートも行われているの、でより詳細な情報はリリースノートを参照してください。

実際に使ってみる

環境準備

★前提条件★
 ・SalesforceCLIがインストールされている
 ・JDKバージョン11以降がインストールされている(本記事はJDK17で実行しています)
 ・VSCodeがインストールされている(任意)


Code Analyzerのプラグインをインストールします。
以下のコマンドをターミナルに入力します。
sf plugins install code-analyzer
CodeAnalyzerInstallCmd
次のコマンドを入力し、プラグインが正常にインストールされていることを確認します。
sf plugins --core
CheckCmd
上記のコマンドを実行し、code-analyzerが出力されたリスト内に表示されていればOKです。

赤枠内にcode-analyzerと表示されている(数字はバージョン情報)

コードをスキャンしてみる

それでは実際にスキャンしていきましょう。
次のコマンドをSalesforce CLIで実行します。
sf code-analyzer run --target “./force-app” --output-file "security-report.html"
ScanApexCmd
--target は解析対象のディレクトリ、--output-file は出力形式とファイル名を指定します。
--output-file に指定するファイルの拡張子で出力形式が自動判別されます。
出力形式でHTMLを指定すると、結果が見やすいHTML形式のレポートで出力されます。
※HTML以外にも、CSVやJson等での出力も可能です。
レポートには検出された問題が一覧表示され、各項目には以下の情報が含まれます。
・対象ファイル
・重大度(Critical / High / Moderate / Low)
・違反ルール名(例:Avoid SOQL queries inside loops)
・使用された分析エンジン
・問題の簡単な説明と修正のヒント
・タグ
・エラー箇所

出力されるHTMLレポートのサンプル

ルールの指定

--rule-selector を使用することでスキャンのルールセットの指定が可能です。Salesforce Code Analyzerではあらかじめ以下のルールセットが用意されています。
・performance:パフォーマンス関連
・security:セキュリティ関連
・all:全ルール    
             etc...

各ルールにはタグが設定されており、このタグを指定することで紐づけられているルールのみを実行することが可能です。
sf code-analyzer rules を実行することで使用可能なルール一覧を出力することが可能です。
次のユースケースでは実際にルールを指定したコマンドを実行してみます。

ユースケース:ループ内のSOQL検出

ここからは、実際のユースケースを想定したコードのスキャンを実行し、その結果を確認してみましょう。
今回は、一般的なアンチパターンであるループ内でのSOQLを含んだコードに対しスキャンを実行しどのような結果が表示されるか確認してみます。
public with sharing class codeAnalyzerTest {
    public void doSomething(Integer count) {
        for (Integer i = 0; i < count; i++) {
            Account a = [SELECT Id, Name FROM Account LIMIT 1];
            // 何か処理
        }
    }
}
CodeAnalyzerTest.cls
実行するコマンドは以下です。
sf code-analyzer run --target "./force-app/main/default/classes/codeAnalyzerTest.cls" --rule-selector performance --output-file "soql-loop-report.html"
CodeAnalyzerTestScanCmd
このコマンドの簡単な解説になります。
--targetで今回のスキャン対象であるCodeAnalyzerTest.clsを指定する。
・ガバナ制限の問題を検知したいので--rule-selectorでperformanceを指定する。
・出力ファイルの形式と名前を--output-fileで指定する。
下のキャプチャが今回のスキャン結果です。
レポートの1行目に OperationWithLimitsInLoop とループの制限の警告が表示されており、Messageにはより詳細にガバナ制限に抵触する可能性についての警告が表示されています。

出力結果

以上が基本的なSalesforce Code Analyzerの実行方法になります。
コマンドを実行しただけで、見やすいHTMLまで出力してくれるのでとても助かります。
次は、より簡単に実行可能なVSCode上での実行方法について紹介したいと思います。

VSCodeで実行してみる

VSCode上で実行するために、拡張機能 Salesforce Extension Pack をインストールします。
Salesforce Extension Packは複数の機能がパッケージされた拡張機能で、今回使用するSalesforce Code Analyzerも含まれています。

Salesforce Extension Pack

拡張機能がインストールできたら、実際にコードスキャンしてみたいと思います。

スキャン対象のファイルを開き、右クリックをします。そうすると、下のようなメニューが開き、下部に SFDX:Scan Current File With Code Analyzar と表示されるのでこれをクリックします。

右クリックした際のメニュー。最下部に表示されている。

実際にコードに対して実行すると以下のような表示になります。
(コードはユースケースで使用したループ内SOQLのサンプルコードです)

スキャン実行後

スキャンを実行すると問題が検出された箇所に黄色のアンダーラインが表示されます。
アンダーラインが表示されている箇所をマウスオーバーすると具体的な問題の内容が表示され、ここから修正を行うことも可能です。

マウスオーバーした際の表示

簡単な紹介にはなりますが以上がVSCodeからコマンドを打たずにスキャンする方法です。
コマンドから実行するよりもかなり手軽に実行できるかと思います。

まとめ

いかがだったでしょうか。
ここまでSalesforce Code Analyzerのセットアップから基本的な使い方までを紹介してきました。
簡単なご紹介にはなってしまいましたが、少しでも便利そうだなと思っていただけましたら幸いです。

Salesforce Code Analyzerの最大の魅力はその手軽さだと思います。紹介したVSCodeの拡張を使用した方法であれば、ワンクリックでコードスキャンを実行することができます。プロジェクト内でこのスキャンを習慣化すれば、コードレビューでの指摘事項を減らせてレビュープロセスの効率化も期待できるのではと思いました。また、v5からはフローや正規表現ベースの分析といったコード以外の部分も解析が可能になっているので今後はより広い業務で使えるようになっていくかと思います。

Salesforce Code Analyzerにはここでは紹介しきれなかった詳細な設定箇所が多くあるため、本格的に使用する際はぜひSalesforceの公式ドキュメントを読んでいただくようにお願いいたします。

以上、最後まで読んでいただきありがとうございました!

参考