CodeGuru Reviewer でブランチ単位でのコード分析ができるようになりました

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

はじめに

こんにちは、技術1課の山中です。 毎日暑くないですか?我が家の仕事部屋にはクーラーがなく、未だに扇風機でがんばっております。

今回は Amazon CodeGure のアップデートです! Amazon CodeGuru Reviewer でこれまではプルリクエスト作成時にコード分析を行うことができたのですが、今回のアップデートでブランチ単位でのコード分析を実行できるようになったようです。

CodeGuru Reviewerに完全なリポジトリ分析サポートが加わりました

Amazon CodeGuru とは

Amazon CodeGuru (以下、 CodeGuru) は、自動化されたコードレビューとアプリケーションパフォーマンスの推奨事項を提供する機械学習サービスです。
CodeGuru は、ベストプラクティスとオープンソースプロジェクトおよび Amazon 内部にある数百万のコードレビューと数千のアプリケーションから培われたノウハウをベースにしているとのことで、アプリケーション開発がかなり楽になりそうです。
また、 Amazon CodeGuru はコードレビューとアプリケーションパフォーマンスの分析とで、大きく以下 2 つの機能に分かれています。

  • CodeGuru Reviewer コードレビューの自動化
  • CodeGuru Profiler アプリケーションパフォーマンスの分析

Amazon Translate(高速で高品質なニューラル機械翻訳サービス)| AWS

aws.amazon.com

対応言語や料金等は以前ご紹介したブログに記載しておりますので、そちらをご参照ください。

blog.serverworks.co.jp

アップデート内容

これまでは、 CodeGuru に関連付けられているリポジトリ内のソースコードをプルリクエストに応じて自動的にスキャンしていましたが、今回のアップデートで手動でコードレビューを実行し推奨事項を表示できるようになったようです。

試してみる

実際に試してみましょう。
コードレビューを実行するステップとしては以下 2 ステップです。

  1. ソースリポジトリを CodeGuru に関連付ける
  2. ブランチを指定し、コードレビューを実行する

1. ソースリポジトリを CodeGuru に関連付ける

これに関しては、 以前のブログStep1Step2 を参照ください。
今回も前回同様サンプルアプリケーションを利用させていただいています。

GitHub - aws-samples/amazon-codeguru-reviewer-sample-app

f:id:swx-yamanaka:20200806101805p:plain

2. ブランチを指定し、コードレビューを実行する

ここからが今回のアップデートの確認です。
AWS マネジメントコンソールから CodeGuru を開き、左ペインから コードレビュー を選択します。

f:id:swx-yamanaka:20200805193649p:plain

コードレビューの画面を開くと、 リポジトリの分析 というタグが新たに追加されています!ので、選択しましょう。

f:id:swx-yamanaka:20200806101913p:plain

リポジトリの分析 ボタンをクリックします。

f:id:swx-yamanaka:20200806102342p:plain

どのソースコードを分析するか設定する画面になるので

f:id:swx-yamanaka:20200806103612p:plain

分析対象のリポジトリとブランチ名を指定して リポジトリの分析を作成 ボタンをクリック!

f:id:swx-yamanaka:20200806103723p:plain

コードレビューの画面に移り、実行した分析のステータスが 保留中 となっています。

f:id:swx-yamanaka:20200806103904p:plain

5 分くらい経つと、ステータスが 完了 となりました。

f:id:swx-yamanaka:20200806104646p:plain

結果の確認

アクション から コードレビューの詳細を表示 を選択し、結果を見てみましょう。

f:id:swx-yamanaka:20200806105011p:plain

と思ったらこっちは結果じゃなくて以下のような画面がでるだけみたいですね。

f:id:swx-yamanaka:20200806105303p:plain

結果を見るには、コードレビュー名のリンクを選択します。

f:id:swx-yamanaka:20200806105417p:plain

そうすると、以下のような画面が表示されます。

f:id:swx-yamanaka:20200806105611p:plain

レビューした結果の推奨事項が下の方に記載されているのでチェックしてみましょう。
まず、はじめに以下の推奨がされていました。

EventHandler.java 行: 79

This code appears to be waiting for a resource before it runs. You could use the waiters feature to help improve efficiency. Consider using ObjectExists or ObjectNotExists. For more information, see https://aws.amazon.com/blogs/developer/waiters-in-the-aws-sdk-for-java/

該当箇所はこちら。

f:id:swx-yamanaka:20200806111008p:plain

「79 行目にはバケット内にオブジェクトが作成されたかどうかの判定ロジックが記載されていますが、これをWaiters という機能を使ってポーリングしたほうが効率的だよ」というアドバイスのようです。
他にも以下のような推奨がされています。

EventHandler.java 行: 100

This code uses an outdated API. ListObjectsV2 is the revised List Objects API, and we recommend you use this revised API for new application developments.

該当箇所はこちら。

f:id:swx-yamanaka:20200806111348p:plain

今度は「古い API を利用しているので、新しい API を利用してね」というアドバイスみたいです。
他にも様々な推奨事項が記載されていますが、こんなに手軽に分析を実行できるなんてとっても楽ですね。

その他

今回マネジメントコンソールから実行したのですが、まだ AWS CLI や SDK などを使っての実行には対応していないみたいです。
※ ドキュメントを探しましたが、該当のコマンドがなかった
今後の対応が待たれますね!!

おわりに

プルリクエスト単位だけでなく、ブランチ単位でコードレビューが実行できるようになったことで、定期的なコードのチェックが可能となりコードの品質維持もやりやすくなるのではないでしょうか!!
この内容は 2020/8/12(水) 18:00 よりYouTube にて配信する「30分でわかる AWS UPDATE!」で取り上げますので、是非ご覧ください!
チャンネル登録よろしくおねがいします!!

www.youtube.com

また、以下でも今回のアップデートに触れておりますので、あわせてご覧ください。


【毎日AWS #034】リポジトリ全体を自動コードレビュー! Amazon CodeGuru のレビュアー機能でリポジトリ全体の分析が可能に 他5件 #サバワ

参考

山中 大志(記事一覧)

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

ビールと味噌カツをこよなく愛するエンジニアです。

AWSをみなさんにより使っていただけるような情報を発信していきたいと考えてます。