Salesforce Code Analyzer でよく引っかかった問題

2025/02/20に公開

Salesforce Code Analyzer とは?

Salesforce Code Analyzerは、セールスフォース社が提供する静的コード解析のツールです。
ソースコードで、バグの温床やセキュリティリスクになる箇所を、問題点として洗い出してくれます。

使用準備

1.インストール

Salesforceのプラグインなので、下記コマンドでインストールします。

sfdx plugins:install @salesforce/sfdx-scanner

2.拡張機能の追加

拡張機能から「Salesforce Code Analyzer」をインストールします。

これで準備完了です!

使い方

一番簡単な使い方は、チェックしたいソースを右クリックしてメニュー内の「Scan Current File With Code Analyzer」を選択するだけです。

これで現在のソースに対してコード解析が実行され、問題点を出力してくれます。

とても簡単ですね!

よく引っかかった問題

私がよく引っかかった問題をいくつか紹介します。

1.引数が多すぎる!

メソッドの引数が多いと怒られます😱
多くの引数を渡したい場合は、その用途に応じたクラスを作成したり、Mapクラスを用いたり工夫する必要があります。

2.コードが複雑すぎる!

制御フローを多用すると怒られます😱
ループや分岐を使うと複雑度が上がり、規定値以上の値になると問題として提起されます。
特にネストが深いほど複雑度が上がりやすくなっています。
メソッド毎のコード量を少なくし、1つのメソッドが複雑になりすぎないよう注意する必要があります。

3.権限チェックしてない!

レコード操作の前にアクセス権限をチェックしていないと怒られます😱
SOQLであれば WITH USER_MODE 句をつけたり、DML操作であれば第2引数に AccessLevel.USER_MODE を指定したりし、実行時のアクセス件を明示的に指定する必要があります。
ユーザモードでは、そのユーザのアクセス件に則った結果や操作が実行され、権限がない場合はエラーを返します。

...正直なところ、最初はこれら以外もかなり引っかかりましました🤮

さいごに

現在のところ、Salesforceの静的コード解析の結果は、コードカバー率のようにリリースを行う上での必達事項ではありません。
そして、完全に順守しようとすると、これまで記述してきた方式が問題として提起され、順応するまでにいくらかのコストが掛かる可能性があります。
また、今すぐ安易に導入することが、プロジェクトにおいて必ず正解になるとも限りません。
しかし、長い目で見ると静的コード解析を導入することは、レビュー工数の削減、可読性や保守性の向上、セキュリティリスクの低減など、メリットも多くあります。
企業によっては、これをリリースの前提条件として独自に定めているところもあるようです。
まだ、導入されていない方は検討されてみてはいかがでしょうか🙇

補足ですが、AppExchangeのパッケージ開発では、セキュリティレビューのテスト結果として提出することが定められているようです。(参考リンク
AppExchangeのパッケージ開発では必達ということですね...🤔

株式会社アクトビ

Discussion