AWS CodeGuru
AWS CodeGuruを使ってみた
AWS re:Invent 2019で発表された機械学習を応用したソースコード解析ツールAWS CodeGuruを使ってみました。 その使用感や解析結果をまとめたいと思います。
参考:使用したのは
CodeGuru Reviewer
のみでCodeGuru Profiler
は使っていません。
-
- 2.1. 連携できるバージョン管理システム
- 2.2. 解析単価
- 2.3. 指摘の観点
-
- 3.1. セットアップについて
- 3.2. 運用性について
-
- 4.1. 指摘されなかったコード
- 4.2. 指摘されたコード
1. 結論
利用者は以下のような方かなと。
- 他の静的解析ツールも使っている
- (AWS CodeGuru一本化は厳しそう)
- AWSのAPIの使用方法が合っているかよくわからないので確認したい
- お金に余裕がある
1.1. 使用感
AWS CodeCommit
やGithub
との連携は簡単- 解析結果はプルリクエストに対して、レビューア(AWS CodeGuru Bot)の指摘として表示される
1.2. 解析結果
- 一般的な静的解析ツール(
FindBugs
やSonarQube
、Coverity
、IDEによる指摘
など)で発見されるバグは、ほとんど指摘されない - AWSのAPIの使い方に関する指摘は鋭い
2. 前提
Amazon CodeGuru
は、「自動化されたコードレビュー」と「アプリケーションパフォーマンスの推奨事項を提供する」機械学習サービスです。(引用元:https://aws.amazon.com/jp/codeguru/)
以下のような静的解析ツールの仲間ですね。
現状(2019/12時点)では、Amazon CodeGuruはJava言語のみ対応。
2.1. 連携できるバージョン管理システム
以下の2つに対応(今回はAWS CodeCommitを使用した)
- Github
- AWS CodeCommit
参考URL : https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/integrations.html
2.2. 解析単価
まぁまぁ高いので、使う際は気をつけましょう。。
今後、巨大なMR作って事故る人出るかもしれないですね、、、
コード 100 行あたり 0.75 USD
例:10,000行のコードだったら、75USD(2019/12時点で約8200円)
引用元:https://aws.amazon.com/jp/codeguru/pricing/
2.3. 指摘の観点
- AWS Best Practices
- AWS APIの使い方について
- Concurrency
- 並行性の実装について(原子性違反を見てくれる)
- Resource Leak Prevention
- リソース漏れについて
- Sensitive Information Leak Prevention
- 機密情報の漏洩について
- Common Coding Best Practices
- 一般的なコーティングについて
引用元:https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/recommendations.html
3. 使用感
3.1. セットアップについて
参考URLに記載の通りであるが、以下の手順で、10分ほどあれば完了するので簡単。
- CodeCommit の初期設定(リポジトリ作成画面に
AWS CodeGuru
との連携オプションあり。)
- Git をインストールする
- CodeCommit への HTTPS 接続用の Git 認証情報を作成する
- CodeCommit コンソールに接続し、リポジトリを複製する
参考URL : https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-gc.html
3.2. 運用性について
マージリクエストに対して、レビュアーのような立場でソースコードに指摘をしてくれるので、運用上指摘を見逃すことがない。
指摘場所は、
AWS CodeCommit
のアクティビティ画面
4. 指摘結果
4.1. 指摘されなかったコード
下のコードはいずれも他の静的解析ツールで指摘されるのですが、、AWS CodeGuru
では指摘されなかったです。
|
|
4.2. 指摘されたコード
一般的なコーディングに対する指摘ですね。
|
|
以下はAWSのAPIについての指摘です。結構詳しく記載されていて「流石です」という所感です。
|
|
|
|
5. 余談
某約20KStepのJavaプロジェクトに対して、AWS CodeGuru
をかけたのですが、ヒットしたのは「指摘されたコード」に記載のAWSのAPIに関する2種類の指摘のみでした。。
これからユーザからのフィードバックを受けてどんどん賢くなっていくとのことなので、今後に期待しましょう!
「某約20KStepのJavaプロジェクト」は、SonarQubeによるバグ指摘はない状態となっています。