Salesforce Code Analyzer でよく引っかかった問題
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