CodeGuru が Python に対応したので Reviewer 機能を試してみました

記事タイトルとURLをコピーする

クラウドインテグレーション部の千葉です。

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 を有効にするダケです。

f:id:swx-chiba:20201209213729p:plain
step-01

2. PullRequest の作成

PullRequest の作成をトリガーに CodeGuru Reviewer が起動されてレビューを実施してくれる。って動作となります。
CodeGuru のサービスページ では以下のように紹介されていました。

機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。

提供してもらおうじゃあないですか『インテリジェントな推奨事項』ってのをっ!
とは言え、あんまり複雑なコードで検証しても伝わりづらくなってしまうので、S3バケットのオブジェクト一覧を出力する。ってだけのコードを用意しました。

期待する指摘事項は2つです。

  1. 利用していないモジュールをインポートしている
  2. S3 のオブジェクトが 1,000 件を超えた場合に対応していない
    • 10行目の AWS ビギナーが一度はヤル系のヤツ

上記のコードを Push して PullRequest を作成します。

f:id:swx-chiba:20201209220316p:plain
step-02

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

f:id:swx-chiba:20201209220459p:plain
step-03

このキャプチャでは Amazon CodeGuru Reviewer has not started reviewing this pull request. となっていますが、数分待つと In progressCompleted と変化します。

3. CodeGuru からの指摘内容

今回、CodeGuru が指摘してくれたのは期待していた内容の2つめ『2. オブジェクトが 1,000 件を超えた場合に対応していない』のみでしたが、とても親切な内容でした。

f:id:swx-chiba:20201209221038p:plain
step-04

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 に流すことは難しくありません。
そんなポイントを踏まえて考えると、我々にとっては非常に頼もしいサービスだな。と感じました。

以上

千葉 哲也 (執筆記事の一覧)

アプリケーションサービス部

コーヒーゼリーが好きです。