How codacy/codacy-analysis-cli works
This legacy Codacy CLI runs local static analysis and optionally uploads results. The main workflow is command parsing, configuration and tool selection, source-file collection, issue/metrics/duplication execution, result formatting, then optional upload. Separate branches cover remote tool/pattern configuration, local cache, Git validation, and configuration validation. The README documents those analysis categories and formats; sampled excerpts do not expose all wiring, so uncertain links are omitted.
Main entry points: AnalyseCommand.scala Analyze command · AnalyseExecutor.scala Analysis executor · ToolRepositoryRemote.scala Remote tool catalog · Main.scala CLI dispatcher
Components 20
CLI and configuration
- CLI dispatcher
cli/src/main/scala/com/codacy/analysis/cli/Main.scala - Analyze command
cli/src/main/scala/com/codacy/analysis/cli/command/AnalyseCommand.scala - Config validation
cli/src/main/scala/com/codacy/analysis/cli/command/ValidateConfigurationCommand.scala - CLI configuration
cli/src/main/scala/com/codacy/analysis/cli/configuration/CLIConfiguration.scala - Project config
core/src/main/scala/com/codacy/analysis/core/configuration/CodacyConfigurationFile.scala - Git validation
core/src/main/scala/com/codacy/analysis/core/git/Repository.scala
Analysis execution
- Analysis executor
cli/src/main/scala/com/codacy/analysis/cli/analysis/AnalyseExecutor.scala - File collection
core/src/main/scala/com/codacy/analysis/core/files/FileCollector.scala - Plugin analyser
core/src/main/scala/com/codacy/analysis/core/analysis/CodacyPluginsAnalyser.scala - Metrics analysis
core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala - Duplication analysis
core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala
Tool catalog
- Tool specifications
core/src/main/scala/com/codacy/analysis/core/tools/ToolRepository.scala - Remote tool catalog
toolRepository-remote/src/main/scala/com/codacy/toolRepository/remote/ToolRepositoryRemote.scala - Tool cache
core/src/main/scala/com/codacy/analysis/core/storage/DataStorage.scala
Results and upload
- Result formatting
cli/src/main/scala/com/codacy/analysis/cli/formatter/Formatter.scala - Text JSON SARIF
cli/src/main/scala/com/codacy/analysis/cli/formatter/Json.scala - Results uploader
core/src/main/scala/com/codacy/analysis/core/upload/ResultsUploader.scala - Codacy client
core/src/main/scala/com/codacy/analysis/core/clients/CodacyClient.scala
Other components
- CLI user
- Codacy API
Connections 20
- CLI user → CLI dispatcher: invokes
- CLI dispatcher → Analyze command: dispatches
- Analyze command → CLI configuration: builds
- Analyze command → Project config: loads
- Analyze command → Git validation: validates commit
- Analyze command → Analysis executor: runs
- Analyze command → Results uploader: uploads results
- Analyze command → Remote tool catalog: constructs catalog
- Analysis executor → File collection: collects files
- Analysis executor → Tool specifications: selects tools
- Analysis executor → Plugin analyser: runs issues
- Analysis executor → Metrics analysis: runs metrics
- Analysis executor → Duplication analysis: runs clones
- Remote tool catalog → Codacy API: fetches tools
- Remote tool catalog → Tool cache: reads/writes cache
- Analysis executor → Result formatting: emits results
- Result formatting → Text JSON SARIF: selects format
- Results uploader → Codacy client: sends batches
- Codacy client → Codacy API: posts results
- Config validation → Project config: validates settings