PMDとVisual Studio CodeによってSalesforceのソースコードのセキュリティスキャンの自動化


「ApexとVisualForceにセキュリティ問題がないか?」と一度悩んだ方が少なくありません。この記事でオープンソースの脆弱性検知ツールを紹介したいと思います。

以下のマニュアルはmacOSとHomebrew用

pmd、 java8とVisual Studio Codeのインストール

$ brew install pmd
$ brew tap caskroom/versions
$ brew cask install java8 
$ brew cask install visual-studio-code

Visual Studio CodeのSalesforce拡張のインストール

$ code --install-extension salesforce.salesforcedx-vscode

Salesforce拡張の設定

Salesforceの拡張はjava8に依存するから、java8のパスを設定する。
⌘ ,を押すかCode→Preferences→Settingsからアクセスし、ユーザー設定を開く。

検索フィールドにsalesforcedx-vscode-apex.java.homeを入力する。Edit in settings.jsonを押す。

$ /usr/libexec/java_home -v 1.8を実行し、java8のパスを調べる。settings.jsonにjava8のパスを以下のように設定する。

{
    "salesforcedx-vscode-apex.java.home": "/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home"
}

PMD taskの設定

Terminal→Configure Tasks...を選択し、Create tasks.json from templateを選んでOthersを押す。

以下のコンテンツをコピーペーする。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "PMD",
            "type": "shell",
            "command": "pmd",
            "args": ["pmd", "-d", "${workspaceFolder}", "-f", "text", "-rulesets", "apex-security,vf-security", "-failOnViolation", "false"],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "owner": "apex",
                "fileLocation": ["absolute"],
                "pattern": {
                    "regexp": "^([^:]+):([0-9]+):\\s+(.+)$",
                    "file": 1,
                    "line": 2,
                    "message": 3
                }
            }
        }
    ]
}

PMDの実行

Visual Studio Codeで⇧⌘Bのショートカットを利用し、問題を検知する。すべての問題を表示するために⇧⌘Mのショートカットを使う。