Next Force.com Security Source Code Scanner

# はじめに

2016年10月より、[Force.com Security Source Code Scanner](https://security.secure.force.com/security/tools/forcecom/scanner)が一部を除き、有償化されてしまいました。セキュリティレビューのために必要なチェックを実施できるツールですが、コード品質を向上させるためにも利用できていました。

今回の有償化処置により、Lintのように定期的に実施してコード品質の維持・向上に役立てる使い方ができなくなってしまいました。ということで、今回は代わりとなるツールがないか調査した結果をまとめてました。

# 調査結果(2016年12月25日時点)

今回調査した範囲で見つかったはツール・サービスは以下のとおりです。

## [CxSAST Salesforce Plugin](https://checkmarx.atlassian.net/wiki/display/KC/CxSAST+Salesforce+Plugin)

CheckMarxが提供するツールです。Salesforce組織にアプリケーションをインストールして利用します。静的コード解析の対象としては、Apex Classes (Test Classes included)、Apex Triggers、VisualForce Pagesになります。結果をPDF、XMLで受け取ることができます。
提供元のCheckMarxはForce.com Security Source Code Scannerも作成している会社なので、同等製品の有償版と思われます。
価格については記載が見つけられませんでした。

## [{/code.scan} :: Code Analysis for Salesforce](https://www.code-scan.com/)

[SonarQube](http://www.sonarqube.com/)のプラグインとして利用できるサービスです。160以上のチェックルールが用意されており、各種メトリクスも収集できます。

価格は下記のように記載されていました。

| Menu | Description | Pricing |
|--------------------------|-------------------------------------------------------|---------------------------------------------------------|
| On-Premise Standard      | Annual Commitment<br/>Ideal for smaller or multiple Orgs   |  \$1,400 / year / 'code block' <br/>\$140 / month / 'code block' |
| On-Premise Multi-Sandbox | Annual Commitment<br/>Ideal for multi-sandbox environments | \$2,800 / year / 'code block'<br/>\$280 / month / 'code block' |
| Eclipse                  | Requires an On-Premise License                        | \$50/month/user                                          |

## [Clayton](https://www.clayton.io/)

Space Heroes Ltdが提供するコードレビューサービスです。リポジトリを登録すると、自動的に静的コード解析を実行し、結果をプルリクエストとして返してくれます。静的コード解析の範囲としては、performance, security, complexity, styleになります。

価格は下記のように記載されていました。Professionalはユーザー数に応じ価格が変わるようになっていました。

|Menu|Description|Pricing|
|--------------|----------------------------------------------------------------------------|---------------------------------------------------------------------|
| Personal     | Public repositories only.| FREE<br/>UP TO 5 REPOSITORIES |
| Professional | Unlimited public and private repositories,pay based on the size your team. | \$75 PER MONTH<br/>Billed annually.<br/>\$90 if billed monthly.<br/><br/>Up to 5 users |

## [Code Climate](https://codeclimate.com/)

PMDをエンジンとして利用したコードレビューサービスです。リポジトリを登録すると、自動的にコードレビューを実行してくれます。静的コード解析の範囲としては、test coverageｍcomplexity、duplication、security、styleなどになります。

価格は下記のように記載されていました。

| Menu       | Description                            | Pricing                                   |
|------------|----------------------------------------|-------------------------------------------|
| Standard   | Ideal for smaller teamsand individuals | $1667per seat / month<br/>billed annually |
| Enterprise | Ideal for larger organizations         | 要問合せ                                  |

オープンソースとして公開されているので、自分でホスティングする場合は無料で利用できるようです。
[ApexMetrics - Code Climate engine for Salesforce.com Apex](https://github.com/Up2Go/codeclimate-apexmetrics)

## [PMD Apex](https://github.com/pmd/pmd)

オープンソースの静的コード解析ツールです。広く使われているツールで、様々な言語の静的コード解析が提供されており、EclipseやIntelliJ IDEAなどのIDEのプラグインも提供されています。また、Maven/Antからも実行し、Jenkinsと連携することもできます。
静的コード解析の範囲としては、ApexUnit、Complexity、Performance、Security、Styleになります。ルールセットの説明は[こちら](http://pmd.sourceforge.net/snapshot/pmd-apex/rules/index.html)にあります。

# おわりに

コードレビューは、不具合を効率的に除去でき、チームによるコード所有を推進します。
コードレビューの問題点として、機械的にチェックできるような問題のためにコードレビューの時間を無駄にしてしまう、軽微な問題がノイズとなりコードレビューに集中することができない、といった点があります。
昨今の開発では、このような問題に対処するためにLintやコードレビューサービスを利用してコーディングした開発者自身が軽微な問題をチェック・修正できるようにする流れがあります。

今回調査してみて、個人的に想定よりも多くのツールやサービスが提供されているように感じました。調べきれなかったサービスや新サービスなどありましたら、お知らせいただければ幸いです。

まずは、無料で利用できる[PMD Apex](http://pmd.sourceforge.net/snapshot/pmd-apex/rules/index.html)あたりを試してみようかと考えています。

Merry Christmas!

※ この投稿はSalesforce App Cloud Advent Calendar 2016 の15日目の代打記事です。