Snyk Code を使って IntelliJ IDEA でスキャンしてみた

Snyk Code + IntelliJ IDEA の Snyk Security プラグインを使って、ソースコードのセキュリティチェックや品質チェックを実行してみました。
2022.08.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Snyk Code は、Snyk が提供しているサービスの1つで、ソースコードのセキュリティスキャンや品質チェックといった静的解析を実行できるサービスです。
執筆時点でサポートされている言語は、

  • C#
  • Go
  • Java
  • JavaScript
  • PHP
  • Python
  • Ruby
  • TypeScript

となっており、多くの言語に対応しています。
詳しい機能や特徴については、こちらのドキュメントをご確認ください。
今回は、JetBrains 用のプラグイン(Snyk Security)を使ってソースコードをスキャンしてみます。

実行環境

  • macOS: 12.4
  • IntelliJ IDEA: 2022.2 (Ultimate Edition)
  • Snyk Security プラグイン: 2.4.42

ライセンスについて

Snyk のライセンスは、選択したプランや利用する機能・開発者数によって料金が設定されています。詳しくは、こちらのドキュメントをご確認ください。 プランの中には Free プランがあるので、実行回数の制限や限られた機能でまずは使ってみることができます。Snyk Code の場合、Free プランで 100 Code tests/month なので、1ヶ月あたり100回まで実行できそうです。 将来的に実行回数の制限を解除したい場合や使いたい機能がある場合は、上位のプランに切り替えることもできます。

プラグインをインストールする

JetBrains 用のプラグインを IntelliJ IDEA にインストールします。(JetBrains 用のプラグインなので、WebStorm や Android Studioなどでも利用可能) インストールは、JetBrains のマーケットプレイスからインストールすることができます。

Preferences ウィンドウを開き、マーケットプレイスで Snyk を検索し、Snyk Security をインストールします。

インストールが完了したら、IntelliJ IDEA を再起動します。

再起動が完了すると、Tool Window に Snyk が追加されます。

プラグインを設定する

続いてインストールしたプラグインを設定します。Snyk Tool Window を開き、Test code now ボタンをクリックするとブラウザが起動し、ログイン画面が開きます。

ログイン画面でサインインまたはログインし、 Authenticate をクリックし、認証を完了させます。

これで Snyk Code を使い始めることができます。その他のプラグインの設定については、こちらのドキュメントをご確認ください。

ソースコードをスキャンする

インストール、セットアップまで完了しましたので、スキャンします。今回は Code SecurityCode Quality のスキャンをやってみます。 機能が有効になっていない場合は、有効にします。

実行アイコン、または Run Scan リンクをクリックするとスキャンを実行できます。今回は、公式で公開してくれている JavaScript のコードをスキャンしてみます。

スキャンは、手元の環境だと10秒程度で完了しました。

スキャン結果を確認する

スキャン結果は、Snyk Tool Window で確認できます。ソースコードで見つかった脆弱性やコードの問題がリストで表示されます。リストをクリックすると、指摘箇所がエディタで表示され、問題点の詳細情報や修正方法の例などが表示されます。

コード品質についても、リストで表示されます。

どこのソースコードが、どのような問題を抱えていて、どのように修正ができるか? を一元的に確認できます。

さいごに

実際に IntelliJ IDEA にプラグインをセットアップして、Snyk Code を実行してみました。プラグインとして提供されているので、簡単に使い始めることができて、導入コストが低く感じました。
実装時に利用している環境で、スキャンの実行、実行結果の確認、指摘事項の修正をすることができるので、実装を進めながら指摘事項への対応もできそうです。 簡単に使い始めることができるので、まずは触ってみてはいかがでしょうか。

参考