Amazon CodeGuru 使ってみた(失敗)

先日re:Inventで発表された AWS CodeGuru を実際に使ってみました。
以前紹介した記事はこちら
結論からいいますと、うまく使えませんでした。
発表をみたときに、「GitHubにJavaコード投げといたら、コードレビューと、パフォーマンスまで判定してくれるの!?」という浅はかな考えで、このサービスを使ってしまいました。
冷静に考えれば

  • 実行環境がEclipseの私のプログラムがどのように実行されるのか
  • Javaファイルだけではプログラムは動作しない
  • そもそも単体で動作しない(Eclipse上でないとアプリが使えない。)

など考えてみればおかしな点がありました。

検証するのは、私がEclipseで作った簡単なPaintアプリです。
Eclipseで作成したプログラムで、Eclipse上でのみ動作します。(これのせいでうまく使えませんでした。) ウインドウが開いて、丸、四角、線などのオブジェクトを表示することができます。

CodeGuruの2つの種類

CodeGuru ReviewerとGodeGuru Profiler の二種類があります。

CodeGuru Reviewer

これはAWSの今まで培ってきた技術力と機械学習を用いてコードレビューをしてくれるというものです。
GitHubやAWS CodeCommitに登録されているJavaコードをレビューしてくれます。
以下は公式サイトの翻訳です。

プログラム分析と機械学習を使用して、開発者がJavaコード内の修正を見つけて推奨する可能性のある潜在的な欠陥を検出するサービスです。

CodeGuru Profiler

これは実行中のアプリケーションのパフォーマンスを分析します。
実行中のアプリケーションということは当然Eclipse上でしか実行できない私のプログラムでは使えるわけないですね

以下公式サイト-よくある質問からの翻訳です

Q: どのタイプのアプリケーションをプロファイルできますか?

Amazon CodeGuru Profiler は、Amazon EC2 でホストされているアプリケーション、Amazon ECS と Amazon EKS で実行されるコンテナ化されたアプリケーション、および AWS Fargate で実行されているサーバーレスアプリケーションで動作します。

これは使ってからわかったのですが、Maven、Gradleを使っているプログラムでないと使えないようです。

私が試したこと

CodeGuru Reviewer

今回はGitHubを使っていきます。
CodeCommitを使うとせっかく90日間無料なのに、お金がかかってしまいますので。

早速私が作ったプログラムの.javaファイルをGitHubにpushしました。
そして自分のリポジトリと、CodeGuruを関連付けます。コレ自体はとても簡単です。

東京リージョンは対応していないので、他の対応リージョンを選択します。
私はなんとなく米国東部(バージニア北部)を選択しました。

そしてAssociated repositories をクリックします。

その後オレンジ色のAssociated repositoryをクリックすると、下記画像の画面が表示されるので、GitHubを選択して、Connect to GitHub をクリックして、別ウインドウで開かられるGitHubのログインページからログインするだけです。

StatusAssociatedになっていればコードレビューが開始されるようなのですが、別に何も表示されません。
コード自体に問題がないときは何も表示しないようです。
自分はまだJavaを触り始めて日が浅いので、なんの問題もないというのはちょっと信じがたいのですが…
そもそもGitHubにあげるときに本来は必要なファイルなどがないということも考えられますが、これ以上情報がないので、諦めます。

CodeGuru Profiler

これに関してはできない理由が明白です。
なぜなら前述の通り、Eclipse上でしか実行できないからです。
EC2でホストされたアプリケーションか、ECSとEKSで実行できるコンテナ化されたアプリケーション、Fargateで実行されるサーバーレスアプリケーションしか対応していません。
あまり詳しくないのであれですが、開発環境(実行環境?)がAWSに関わるものではないと、できないようですね。
アプリケーションのパフォーマンスチェックのみにAWSを使うという使い方はできないようです。

私が試したことはGitHubにEclipseで実行に必要なworkspaceのフォルダをまるごとpushしたり、マニュアル通りmain関数に必要なコードを記述したり、いろいろ行いましたが、そもそもpom.xmlgradleファイルどちらかが必要なのですが、どちらも存在しません。なんども言いますが、実行環境がEclipseだからです。

おわりに

「すごいサービスだ!」と思って飛びつくと、こんな落とし穴があるんですね。勉強になりました。
あと、CodeGuruはまだプレビュー段階なので、正式発表までは不具合があるかもしれません。
開発環境or実行環境がAWS上のサービス出ない方は注意してください。