| title | Linting Phases |
|---|---|
| icon | config |
The linter executes in five phases:
-
Input Validation:
- Validates that input is a JAR file
- Checks file existence or URL accessibility
-
JAR Extraction:
- Downloads remote JAR files if needed
- Extracts JAR contents to temporary directory
- Preserves directory structure
-
Classloader Setup:
- Creates project-specific classloader
- Loads plugin classes and dependencies
- Sets up context classloader for resource access
-
Plugin Discovery:
- Scans
META-INF/services/for plugin registrations - Loads plugin classes
- Detects API version (v1 or v2)
- Scans
-
BPMN Discovery:
- Scans
bpe/directory for BPMN files - Parses BPMN files to extract process definitions
- Maps BPMN files to plugins
- Scans
-
FHIR Discovery:
- Scans
fhir/directory for FHIR resources - Organizes resources by type
- Maps FHIR resources to plugins
- Scans
-
Reference Mapping:
- Extracts BPMN references to FHIR resources
- Maps FHIR resource references
- Identifies cross-references
-
Per-Plugin Linting:
- For each discovered plugin:
- Validates BPMN processes
- Validates FHIR resources
- Validates plugin configuration
- Collects lint items
- For each discovered plugin:
-
Project-Level Analysis:
- Performs leftover resource analysis
- Aggregates referenced resources across all plugins
- Identifies unreferenced resources
-
Result Aggregation:
- Combines results from all plugins
- Calculates totals (errors, warnings)
- Determines overall success status
-
HTML Report Generation:
- Generates summary page
- Generates detailed plugin pages
- Applies templates and styling
-
JSON Report Generation (if requested):
- Serializes all results to JSON
- Includes metadata and statistics
- Provides machine-readable format
-
Console Output:
- Displays execution summary
- Shows error and warning counts
- Reports execution time
-
Exit Code Determination:
- Sets exit code based on results
- Respects
--no-failflag - Returns appropriate status code