Skip to content

Conversation

@fangjian0423
Copy link

Summary

This PR integrates GitHub Copilot app modernization capabilities into Azure Toolkit for IntelliJ through "Migrate to Azure" entry points and Java Upgrade detection features.

Part 1: Migrate to Azure Entry Points

Three Entry Points

  1. Service Explorer - New "Migrate to Azure" node under Azure root node
  2. Context Menu - "Migrate to Azure" action in project/module right-click menu
  3. Project Explorer Facet - "Migrate to Azure" node under Azure facet

Plugin Installation Flow

  • Detects if GitHub Copilot app modernization plugin is installed
  • Shows confirmation dialog and triggers installation via IntelliJ PluginsAdvertiser
  • IntelliJ automatically restarts after installation

Extension Point Mechanism

  • Introduces IMigrateOptionProvider extension point for appmod plugin to provide migration options
  • Uses optional dependency (config-file loading) for compatibility when appmod plugin is not installed
  • Supports lazy loading for Service Explorer and Project Explorer nodes

Three States Handling

All entry points handle:

  1. Not Installed - Prompts to install the plugin
  2. Installed, No Options - Opens GitHub Copilot app modernization panel
  3. Installed, Has Options - Shows available migration options from extension points

Part 2: Java Upgrade Features

Startup Detection

  • JavaUpgradeCheckStartupActivity - Checks Java version and framework dependencies on project open
  • Detects outdated Java runtime (non-LTS versions)
  • Caches issues in JavaUpgradeIssuesCache for quick access

Code Inspection

  • JavaUpgradeIssuesInspection - Displays upgrade issues in editor
  • Shows warnings for outdated Java versions and dependencies
  • Quick fix actions to trigger upgrade via Copilot

CVE Detection

  • Scans for known vulnerabilities in dependencies
  • CveFixIntentionAction - Quick fix in editor
  • CveFixInProblemsViewAction - Fix action in Problems view

Context Menu Integration

  • JavaUpgradeContextMenuAction - Right-click action for upgrade
  • Options: Upgrade Java, Upgrade Framework, Scan CVEs

Notifications

  • JavaVersionNotificationService - Shows balloon notifications for upgrade opportunities
  • Configurable via Settings page
  • "Don't Show Again" option per project

Settings Page

  • JavaUpgradeConfigurable - Settings under Azure Toolkit
  • Enable/disable notifications globally or per project

@fangjian0423 fangjian0423 marked this pull request as ready for review January 27, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants