こんにちは。ROBOT PAYMENTでエンジニアをしているtakamoriです。
今回は、Salesforce開発においてコード品質を自動チェックできる便利ツール「Salesforce Code Analyzer」を、GitHub ActionsのCIパイプラインに組み込んでみたのでご紹介したい思います。Salesforce開発でCI/CDを組む際の静的解析ツール導入の参考になれば幸いです。
Salesforce Code Analyzerとは?
Salesforce Code Analyzerは、ApexコードやVisualforceページ、Lightning Web Components (LWC) などに対して、静的コード解析を実行してくれるツールです。Salesforce CLIにプラグインとしてインストールして利用します。内部的には、PMDやESLintなどを統合してくれているため、複数ツールを個別に設定する手間が省けます。
Salesforce公式がメンテしているので導入障壁も低いのが特徴です。
事前準備
Salesforce開発者の皆さんはsfdxコマンドは導入済みかと思いますので、Salesforce Code Analyzerを実際にローカル環境で動かすところから解説します。
インストールは簡単でsfdxコマンドのプラグインとしてインストールします。
sfdx plugins:install @salesforce/code-analyzer
インストールが完了したら、対象コードに対して解析を実行します。
sfdx scanner:run --target "force-app" --format "table"
これで解析結果がターミナルに出力されればOKです。
GitHub Actionsに組み込む
いよいよ本題です。
Salesforce Code AnalyzerをGithub Actionsで動かすには下記全体の流れに沿って、ワークフローファイルを記載するだけです。
全体の流れ
- GitHub ActionsでSalesforce CLIをインストール
- Code Analyzerプラグインもインストール
scanner:run
を実行して結果をチェック- 問題があったらPRをFailさせる
作成したワークフローファイル
今回、弊社では以下のようなワークフローファイルを作成しました。
設定ではPRが作成・編集された場合に実行し、静的解析を行うようにしています。
name: Salesforce Code Analyzer Workflow on: pull_request: types: [opened, reopened, edited] jobs: salesforce-code-analyzer-workflow: runs-on: ubuntu-latest steps: - name: Check out files uses: actions/checkout@v4 # Salesforce CLIのインストール - name: Install Salesforce CLI run: | node --version npm install @salesforce/cli --global # Salesforce Code Analyzerのインストール - name: Install Salesforce Code Analyzer Plugin run: sfdx plugins install @salesforce/sfdx-scanner@latest # Salesforce Code Analyzerの実行 - name: Run Salesforce Code Analyzer id: run-code-analyzer uses: forcedotcom/run-code-analyzer@v1 with: run-command: run run-arguments: --normalize-severity --target . --outfile results.html results-artifact-name: salesforce-code-analyzer-results # Salesforce Code Analyzerの実行結果出力 - name: Check the outputs to determine whether to fail if: | steps.run-code-analyzer.outputs.exit-code > 0 || steps.run-code-analyzer.outputs.num-sev1-violations > 0 || steps.run-code-analyzer.outputs.num-violations > 10 run: exit 1
実行結果
実際の実行結果画面です。(エラーを仕込んでます)
対象ファイル名、違反ルール、メッセージなどが分かりやすく表示されているかと思います。
他の静的解析ツール同様、適用ルールの種類やレベルは独自に設定可能ですので、コーディングルールに沿った運用もできるのが嬉しいポイントです。
まとめ
以上、Salesforce Code AnalyzerをGitHub Actionsに組み込んでみた話でした。
Salesforce開発でも、PR時に静的解析を自動実行することで、
- 品質の底上げ
- レビューの効率化
- ミスの早期検知
が容易になったと感じています。
導入も簡単にできますので、もしまだ導入していないチームがあればぜひ試してみてください!
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!