Amazon Q Developer が Java 言語アップグレードのコードを変換する方法 - Amazon Q Developer

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Q Developer が Java 言語アップグレードのコードを変換する方法

コードを変換するために、Amazon Q Developer はプロジェクトのコード言語バージョンのアップグレードに使用する変換プランを生成します。コードを変換すると、変換の概要とファイルの差分が表示され、変更を受け入れる前に内容を確認できます。以下のセクションでは、Amazon Q が変換を実行する方法について詳しく説明します。

コードをビルドし、変換プランを作成する

コードの変換を開始するために、Amazon Q はプロジェクトをローカルでビルドし、ソースコード、プロジェクトの依存関係、ビルドログを含むビルドアーティファクトを生成します。

ビルドアーティファクトを生成した後、Amazon Q は安全なビルド環境にコードをビルドし、アップグレードするプロジェクトまたはモジュールに合わせてカスタマイズされた変換プランを作成します。変換プランでは、Amazon Q が行おうとしている特定の変更点の概要が説明されます。これには、新しい依存関係バージョン、主要なコード変更、廃止されたコードの代替案が含まれます。こうした変更は、コードの予備ビルドに基づいており、変換中に変更される可能性があります。

変換を開始する前に、Amazon Q が提案する変更を複数の差分に分割することができます。これにより、一度に行う変更数を減らしてコードを更新およびテストでき、変換の完了後に変更を段階的に受け入れる必要があります。

コードを変換する

コードを変換するために、Amazon Q は変換プランで提案された変更に基づいて、コードをターゲット Java バージョンにアップグレードしようとします。変更を行う際には、ソースコード内の既存のユニットテストを再ビルドして実行し、発生したエラーを繰り返し修正します。

Amazon Q は、コードをアップグレードする際に次の変更を試みます。

  • ターゲット Java バージョンの推奨事項に従って、非推奨のコードコンポーネントを更新する

  • 一般的なライブラリとフレームワークを、ターゲットの Java バージョンと互換性のあるバージョンにアップグレードします。これには、次のライブラリとフレームワークを最新の利用可能なメジャーバージョンに更新することが含まれます。

    • Apache Commons IO

    • Apache HttpClient

    • bc-fips

    • Cucumber-JVM

    • 休止

    • jackson-annotations

    • JakartaEE

    • Javax

    • javax.servlet

    • jaxb-api

    • jaxb-impl

    • jaxen

    • jcl-over-slf4j

    • json-simple

    • jsr305

    • junit

    • junit-jupiter-api

    • Log4j

    • Micronaut

    • Mockito

    • mockito-core

    • Okio

    • PowerMockito

    • Quarkus

    • slf4j

    • slf4j-api

    • Spring Boot

    • Spring Framework

    • Spring Security

    • Swagger

    • testng

変換の概要を確認し、変更を受け入れる

変換が完了すると、Amazon Q は、プロジェクト全体がアップグレードされたかどうかを示す最終ビルドのステータスなど、変更の詳細を含む変換の概要を用意します。ビルドログの概要を確認して、Amazon Q がアップグレードされたバージョンでコードをビルドできない原因となった問題を解明することもできます。

変換の概要には、変換プランの提案された変更とコードのアップグレードのために最終的に Amazon Q が行った変更の違い、元のプランになかった追加の変更についても記載されています。

変換の概要を確認したら、Amazon Q が提案している変更をファイル差分ビューで表示できます。Amazon Q が提案するコード変更は、変更を受け入れるまで現在のプロジェクトファイルには影響しません。変換されたコードは、変換が完了してから最大 30 日後に使用できます。

Amazon Q で変更を複数の差分に分割することを選択した場合、アプリケーションに必要なアップグレードに応じて、1 つ以上の差分に変更が提供されます。アプリケーションに該当する場合、変更は次のグループに分類されます。

  • 互換性のあるライブラリの最小バージョンをターゲット Java バージョンにアップグレードする: Springboot、JUnit、PowerMockito などの依存関係を、ターゲット Java バージョンの最小互換バージョンにアップグレードします。

  • 一般的なエンタープライズ仕様アプリケーションフレームワーク: Jakarta EE、Hibernate、Micronaut 3 などの一般的なエンタープライズフレームワークとアプリケーションフレームワークをアップグレードします。

  • HTTP クライアントユーティリティウェブフレームワーク: HTTP クライアントライブラリ、Apache Commons ユーティリティ、および Struts フレームワークをアップグレードします。

  • テストツールフレームワーク: ArchUnit、Mockito、TestContainers などのテストツールをアップグレードし、Jenkins や Maven Wrapper などのツールを構築します。

  • その他の処理ドキュメント: ORMs、XML 処理、Swagger から SpringDoc/OpenAPI などの API ドキュメントなど、複数のタイプのアップグレード。

  • 非推奨APIs、古い依存関係、フォーマット: 非推奨の APIs置き換え、追加の依存関係バージョンのアップグレードを行い、コード変更をフォーマットする

Amazon Q は一度に 1 つの差分ファイルを提供します。次の差分を確認するには、差分の変更を受け入れる必要があります。差分の変更を拒否すると、他の差分を確認できなくなります。1 つの差分から変更を受け入れると、コードの更新を確認して変更をテストしてから、後続の変更を受け入れることができます。

差分全体にマイナーバージョンのダウングレードがある可能性があることに注意してください。たとえば、最初の差分で依存関係バージョンが新しいバージョンにアップグレードされ、後続の差分で依存関係の古いバージョンが表示される場合があります。これは、Amazon Q が各差分で行われた変更に合わせてバージョンを調整する必要がある可能性があるためです。すべての差分からの変更を受け入れると、コードには最新の信頼できるバージョンが含まれます。

差分のタイトルは、提案された変更が完全変換と部分変換のどちらになるかを示します。差分が変換が部分的にしか成功しなかったことを示している場合、完全な変換とコード構築の成功に必要なすべての変更は含まれません。コードの最もアップグレードされたバージョンを取得するには、部分的な成功を含むすべてのコード差分を受け入れます。その後、Amazon Q が修正できなかったエラーに対処するために、コードを手動で更新できます。

部分的に成功した変換を完了する

コードベースの複雑さと詳細によっては、変換が部分的に成功する場合があります。これは、Amazon Q がプロジェクト内の特定のファイルやコード領域のみを変換できたことを意味します。この場合、更新された言語バージョンでビルドできるように、プロジェクトの残りのコードを手動で更新する必要があります。

残りのコードを変換するには、IDE で Amazon Q チャットを使用します。Amazon Q に部分的に更新されたファイルを確認し、コンパイルエラーなどの問題に対処するための新しいコードを提供するようにリクエストします。また、/dev@workspace などの機能を使用して、コンテキストとして含めるプロジェクトを増やし、一度に複数のファイルの提案を取得することもできます。