feat: add license compatibility checking and mismatch detection#243
Conversation
Verification Report for TC-3650Task: Client side license data - IntelliJ Deterministic Checks
Acceptance Criteria (derived from parent epic + VS Code reference implementation)
VS Code Alignment Analysis
Additional Findings
Overall: FAILBlocking issues:
Non-blocking issues to address:
This comment was AI-generated by sdlc-workflow/verify-pr v0.5.1. |
PR Reviewer Guide 🔍(Review updated until commit c66dc9a)Here are some key observations to aid the review process:
|
- Switch API to componentAnalysisWithLicense() for license-aware analysis - Add licenseCheckEnabled setting (default true) with UI checkbox - Detect license mismatch between manifest and LICENSE file (ERROR) - Report incompatible dependency licenses (WARNING), merged into vulnerability annotations when both apply to the same dependency - Quick fix to update manifest license with SPDX ID from LICENSE file - Cache license summary alongside vulnerability data - Invalidate all caches after license quick fix to trigger re-analysis - Use WEAK_WARNING severity for recommendation-only dependencies - Implement license field extraction for NPM, Maven, and Cargo; Go, Gradle, and Python return null (no standard license field) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4fa6e62 to
c66dc9a
Compare
|
/review |
|
Persistent review updated to latest commit c66dc9a |
…s results Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Review Summary by QodoAdd license compatibility checking with mismatch detection and quick fixes
WalkthroughsDescription• Add license compatibility checking with mismatch detection between manifest and LICENSE file • Implement license quick fix to update manifest with SPDX ID from LICENSE file • Report incompatible dependency licenses as warnings, merged with vulnerability annotations • Cache license summary data alongside vulnerability reports for efficient analysis • Escape HTML in tooltip strings to prevent injection from analysis results • Add licenseCheckEnabled setting (default true) with UI checkbox for license checks • Use WEAK_WARNING severity for recommendation-only dependencies without vulnerabilities • Implement license field extraction for NPM, Maven, and Cargo; return null for Go, Gradle, Python Diagramflowchart LR
A["API Call"] -->|componentAnalysisWithLicense| B["ComponentAnalysisResult"]
B -->|extract| C["LicenseSummary"]
C -->|cache| D["License Cache"]
D -->|build| E["License Annotations"]
E -->|merge with| F["Vulnerability Annotations"]
C -->|detect mismatch| G["License Mismatch ERROR"]
C -->|incompatible deps| H["License Warning"]
G -->|quick fix| I["Update Manifest"]
I -->|invalidate| D
File Changes1. src/main/java/org/jboss/tools/intellij/componentanalysis/CAAnnotator.java
|
Code Review by Qodo
1.
|
- Invalidate all caches when licenseCheckEnabled setting changes so re-analysis is triggered on the next annotator pass - Merge PSI element lists on noVersionMap key collisions instead of discarding duplicates, ensuring all occurrences get license warnings - Wrap standalone license warning tooltips with <html> root element - Return null from extractSpdxId() when no real SPDX identifier is available, preventing quick-fixes from proposing non-SPDX values Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|



DRAFT This is ready for review, however, it won't compile until next
trustify-da-java-clientupdate.