ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

Salesforce Code AnalyzerをGitHub Actionsに組み込んでみた

こんにちは。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で動かすには下記全体の流れに沿って、ワークフローファイルを記載するだけです。

全体の流れ

  1. GitHub ActionsでSalesforce CLIをインストール
  2. Code Analyzerプラグインもインストール
  3. scanner:runを実行して結果をチェック
  4. 問題があったら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では一緒に働く仲間を募集しています!!!


www.robotpayment.co.jp