クラウドインテグレーション部の千葉です。
CodeGuru が Python に対応しました。
うれしいですね!期待しちゃいますね!!
ってことで、わたし試してみました。
1. CodeCommit の作成 + CodeGuru Reviewerを有効化
リポジトリとして、AWS CodeCommit / GitHub (GitHub Enterprise Cloud) / GitHub Enterprise Server / Bitbucket が利用できます。
今回は CodeCommit でサクっと検証してみます。
CodeGuru Reviewer の設定はとっても簡単で、CodeCommit リポジトリの作成時に Enable Amazon CodeGuru Reviewer for Java and Python を有効にするダケです。

2. PullRequest の作成
PullRequest の作成をトリガーに CodeGuru Reviewer が起動されてレビューを実施してくれる。って動作となります。
CodeGuru のサービスページ では以下のように紹介されていました。
機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。
提供してもらおうじゃあないですか『インテリジェントな推奨事項』ってのをっ!
とは言え、あんまり複雑なコードで検証しても伝わりづらくなってしまうので、S3バケットのオブジェクト一覧を出力する。ってだけのコードを用意しました。
期待する指摘事項は2つです。
- 利用していないモジュールをインポートしている
- 1行目の
import os
の部分 (Flake8: F401)
- 1行目の
- S3 のオブジェクトが 1,000 件を超えた場合に対応していない
- 10行目の AWS ビギナーが一度はヤル系のヤツ
上記のコードを Push して PullRequest を作成します。

作成した PullRequest の Activity タブを開き Amazon CodeGuru Reviewer job status を確認してください。

このキャプチャでは Amazon CodeGuru Reviewer has not started reviewing this pull request. となっていますが、数分待つと In progress → Completed と変化します。
3. CodeGuru からの指摘内容
今回、CodeGuru が指摘してくれたのは期待していた内容の2つめ『2. オブジェクトが 1,000 件を超えた場合に対応していない』のみでしたが、とても親切な内容でした。

The API method list_objects_v2 returns paginated results instead of all results. Consider using the pagination API or checking one of the following keys in the response to verify that all results were returned: ContinuationToken, IsTruncated, NextContinuationToken, NextToken. Learn more
わかりやすい ってのは、本当にありがたいことです。
4. コードの修正、Push
指摘された箇所を修正して改めて Push します。
再度 CodeGuru Reviewer が実行されるので PullRequest の Activity を確認します。
今回のレビューでは新たな指摘は付きませんでした。バッチリです。
5. まとめ
利用していないモジュールをインポートする。ってのは、あまりにも愚行みたいでスルーされてしまいましたが、 boto3 を利用している部分については丁寧な指摘をして貰えました。
Infrastructure as Code (IaC) なんて謳われてから数年、様々な方がコード化にチャレンジしてきたことと思います。
なかには随分と雑に書かれたコードもあるかもしれません。
優秀なプログラマに、すべてのコードをレビューさせることはできませんが、すべてのコードを CodeGuru Reviewer に流すことは難しくありません。
そんなポイントを踏まえて考えると、我々にとっては非常に頼もしいサービスだな。と感じました。
以上