CodeClone Report for codeclone

Generated at 2026-04-16T13:36:48Z
Current health snapshot
Health 89/100 (B); 0 clone groups; 0 dead-code items (1 suppressed); 0 dependency cycles.
89
Grade B
Clone Groups?
0
0func0block0seg
High Complexity?
0
2.79avg20max
High Coupling?
0
0.6avg10max
Low Cohesion?
0
1.11avg3max
Dep. Cycles?
0
11depth
Dead Code?
0
0high-conf
Findings?
0
0kinds
Suggestions?
0
0clone0struct0metric

Executive Summary

176 files · 82,053 lines · 1,376 callables · 171 classes. Thresholds: func 6/4 · block 20/8 · seg 20/10

Issue breakdown
No issues detected
Source breakdown
No source data available

Adoption & API

Type/docstring adoption and public API surface are shown as facts, not style pressure.

Adoption coverage
Param annotations100.0%
Return annotations99.9%
Docstrings3.6%
Typed as Any46
Public API surface
Disabled in this run.
Enable via--api-surface

Overloaded Modules

12 candidates across 176 ranked modules — disproportionate size, complexity, or coupling.

Top candidates
tests/test_report_contract_coverage.pyTests
0.98
2,819 LOC·fan-in/out 0/9·complexity 30
tests/test_report.pyTests
0.97
3,172 LOC·fan-in/out 0/13·complexity 74
codeclone/cache.pyProduction
0.97
2,803 LOC·fan-in/out 11/8·complexity 307
More candidates
codeclone/report/json_contract.pyProduction
0.97
2,918 LOC·fan-in/out 9/11·complexity 148
codeclone/cli.pyProduction
0.97
1,741 LOC·fan-in/out 3/20·complexity 79

Health Profile

Dimension scores across all quality axes.

Health profile
Clones100Complexity69Coupling76Cohesion98Dead Code100Deps80Coverage100
Higher values indicate better code health. Red labels highlight dimensions below 60.
Where is duplication concentrated right now?
0 groups and 0 instances. 8 suppressed golden-fixture groups are excluded from active review.
Clone groups ?
0
0functions0blocks0segments
Instances ?
0
0avg/group
High spread ?
0
Kind ?GroupFile ?TypeOccurrencesRulePattern
Functiontransform_alphaType-24golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Blocktransform_alphaType-44golden_fixture@project_configtests/fixtures/golden_*
Are there quality hotspots in the codebase?
High-complexity: 0; high-coupling: 0; low-cohesion: 0; overloaded modules: 12; max CC 20; max CBO 10; max LCOM4 3.
High-risk functions ?
0
1376total
Max CC ?
20
< 10target
Avg CC ?
2.8
1376functions
Deep nesting ?
6
> 4threshold
Function ?File ?CC ?Nesting ?Risk ?
_run_analysis_stagescodeclone/cli.py203medium
decode_segment_report_projectioncodeclone/cache_segments.py203medium
_encode_wire_file_entrycodeclone/cache.py203medium
write_report_outputscodeclone/_cli_reports.py203medium
render_text_report_documentcodeclone/report/serialize.py202medium
compute_lcom4codeclone/metrics/cohesion.py194medium
resolve_clone_baseline_statecodeclone/_cli_baselines.py185medium
_collect_paths_from_metricscodeclone/report/json_contract.py183medium
_enforce_gatingcodeclone/cli.py182medium
build_overloaded_modules_payloadcodeclone/metrics/overloaded_modules.py173medium
Cache._load_and_validatecodeclone/cache.py172medium
_parse_api_surface_snapshotcodeclone/metrics_baseline.py164medium
Baseline.savecodeclone/baseline.py164medium
render_meta_panelcodeclone/_html_report/_sections/_meta.py164medium
_FunctionStructureScanner._visit_statementcodeclone/structural_findings.py163medium
render_markdown_report_documentcodeclone/report/markdown.py154medium
_collect_report_file_listcodeclone/report/json_contract.py154medium
extract_units_and_stats_from_sourcecodeclone/extractor.py153medium
CFGBuilder._visit_trycodeclone/cfg.py152medium
build_codeclone_args.github/actions/codeclone/_action_impl.py151medium
_signature_break_detailcodeclone/metrics/api_surface.py142medium
_render_group_explanationcodeclone/_html_report/_sections/_clones.py142medium
_derive_group_display_namecodeclone/_html_report/_sections/_clones.py134medium
_load_metrics_baseline_for_diffcodeclone/_cli_baselines.py133medium
CodeCloneMCPService._safe_refactor_shapecodeclone/mcp_service.py131medium
_has_cache_entry_container_shapecodeclone/cache.py131medium
serialize_finding_group_cardcodeclone/report/overview.py1210medium
processcodeclone/pipeline.py127medium
discovercodeclone/pipeline.py124medium
_parse_limitscodeclone/extractor.py123medium
_location_entrycodeclone/report/sarif.py122medium
enrich_with_assert_factscodeclone/report/explain.py122medium
reportcodeclone/pipeline.py122medium
CodeCloneMCPService._render_resourcecodeclone/mcp_service.py122medium
_main_implcodeclone/cli.py122medium
Cache.get_file_entrycodeclone/cache.py122medium
Baseline.loadcodeclone/baseline.py122medium
parse_metric_reason_entrycodeclone/_cli_gating.py122medium
load_pyproject_configcodeclone/_cli_config.py121medium
_canonicalize_cache_entrycodeclone/cache.py113medium
_build_layer_groupscodeclone/_html_report/_sections/_dependencies.py113medium
render_quality_panelcodeclone/_html_report/_sections/_coupling.py113medium
_build_design_groupscodeclone/report/json_contract.py112medium
_public_symbol_from_cache_dictcodeclone/pipeline.py112medium
MetricsBaseline.loadcodeclone/metrics_baseline.py112medium
_resolve_report_filenamecodeclone/metrics/coverage_join.py112medium
_health_gauge_htmlcodeclone/_html_report/_sections/_overview.py112medium
build_html_reportcodeclone/_html_report/_assemble.py112medium
render_clones_panelcodeclone/_html_report/_sections/_clones.py111medium
build_directory_hotspotscodeclone/report/overview.py104low
High-coupling classes ?
0
171total
Max CBO ?
10
< 8target
Avg CBO ?
1.8
57classes
Medium risk ?
0
Class ?File ?CBO ?Risk ?Coupled classes ?
CodeCloneMCPServicecodeclone/mcp_service.py10medium
CodeClon..RunStoreMCPAnalysisRequestMCPFindi..undError(+7 more)
CodeClon..RunStoreMCPAnalysisRequestMCPFindi..undErrorMCPGateRequestMCPRunNo..undErrorMCPRunRecordMCPServi..actErrorMCPServiceError_BufferConsolejson
CacheEntrycodeclone/cache.py9medium
CacheEntryBaseClassMetricsDictDeadCandidateDict(+6 more)
CacheEntryBaseClassMetricsDictDeadCandidateDictModuleAp..faceDictModuleDepDictModuleDo..rageDictModuleTy..rageDictSourceStatsDictStructur..roupDict
ProjectMetricscodeclone/models.py6medium
ApiSurfaceSnapshotDeadItemHealthScore(+3 more)
ApiSurfaceSnapshotDeadItemHealthScoreModuleDepModuleDo..CoverageModuleTy..Coverage
FileMetricscodeclone/models.py6medium
ClassMetricsDeadCandidateModuleApiSurface(+3 more)
ClassMetricsDeadCandidateModuleApiSurfaceModuleDepModuleDo..CoverageModuleTy..Coverage
Cachecodeclone/cache.py6medium
AnalysisProfileCacheDataCacheEntry(+3 more)
AnalysisProfileCacheDataCacheEntryCacheStatusFileStatSourceStatsDict
AstNormalizercodeclone/normalize.py3lowNormaliz..onConfigastcopy
_FunctionStructureScannercodeclone/structural_findings.py3lowFunction..ureFactsastsys
CodeCloneMCPRunStorecodeclone/mcp_service.py3lowMCPRunNo..undErrorMCPRunRecordMCPServi..actError
CFGBuildercodeclone/cfg.py3low_LoopContext_TryLikeast
_FixedExecutortests/test_cli_inprocess.py2low_FalseExitContext_FixedFuture
MetricsBaselinecodeclone/metrics_baseline.py2lowMetricsB..neStatushmac
Baselinecodeclone/baseline.py2lowBaselineStatushmac
_DummyExecutortests/test_cli_inprocess.py2low_DummyFuture_FalseExitContext
CacheDatacodeclone/cache.py2lowAnalysisProfileCacheEntry
_ArgumentParsercodeclone/_cli_args.py2lowargparsesys
TestAdmissionThresholdBoundariestests/test_extractor.py1lowpytest
_FailingExecutortests/test_cli_inprocess.py1low_FalseExitContext
Blockcodeclone/cfg_model.py1lowast
_FileCachecodeclone/_html_snippets.py1low_CacheInfo
_InlineExecutortests/test_golden_v2.py1low_DummyFuture
_DummyProgresstests/test_cli_inprocess.py1low_FalseExitContext
ReportArtifactsscripts/build_docs_example_report.py1lowjson
_StatementRecordcodeclone/report/explain.py1lowast
QualnameCollectorcodeclone/qualnames.py1lowast
BootstrapResultcodeclone/pipeline.py1lowOutputPaths
Suggestioncodeclone/models.py1lowReportLocation
StructuralFindingGroupcodeclone/models.py1lowStructur..currence
PublicSymbolcodeclone/models.py1lowApiParamSpec
ModuleApiSurfacecodeclone/models.py1lowPublicSymbol
MetricsDiffcodeclone/models.py1lowApiBreakingChange
FunctionGroupItemcodeclone/models.py1lowFunction..ItemBase
DepGraphcodeclone/models.py1lowModuleDep
CoverageJoinResultcodeclone/models.py1lowUnitCoverageFact
ApiSurfaceSnapshotcodeclone/models.py1lowModuleApiSurface
_CoverageReportcodeclone/metrics/coverage_join.py1low_CoverageFileLines
MCPServiceContractErrorcodeclone/mcp_service.py1lowMCPServiceError
MCPRunRecordcodeclone/mcp_service.py1lowMCPAnalysisRequest
MCPRunNotFoundErrorcodeclone/mcp_service.py1lowMCPServiceError
MCPGitDiffErrorcodeclone/mcp_service.py1lowMCPServiceError
MCPFindingNotFoundErrorcodeclone/mcp_service.py1lowMCPServiceError
_ModuleWalkStatecodeclone/extractor.py1lowast
ValidationErrorcodeclone/errors.py1lowCodeCloneError
ParseErrorcodeclone/errors.py1lowFileProc..ingError
FileProcessingErrorcodeclone/errors.py1lowCodeCloneError
CacheErrorcodeclone/errors.py1lowCodeCloneError
BaselineValidationErrorcodeclone/errors.py1lowBaseline..emaError
BaselineSchemaErrorcodeclone/errors.py1lowCodeCloneError
CFGcodeclone/cfg_model.py1lowBlock
_TryLikecodeclone/cfg.py1lowast
StructuralFindingGroupDictcodeclone/cache.py1lowStructur..enceDict
Low-cohesion classes ?
0
171total
Max LCOM4 ?
3
= 1target
High risk ?
0
Medium risk ?
0
Class ?File ?LCOM4 ?Risk ?Methods ?Fields ?
CodeCloneMCPServicecodeclone/mcp_service.py1low131118
CacheEntrycodeclone/cache.py1low00
ProjectMetricscodeclone/models.py1low00
FileMetricscodeclone/models.py1low00
Cachecodeclone/cache.py1low1525
AstNormalizercodeclone/normalize.py2medium135
_FunctionStructureScannercodeclone/structural_findings.py1low816
CodeCloneMCPRunStorecodeclone/mcp_service.py1low65
CFGBuildercodeclone/cfg.py1low1920
_FixedExecutortests/test_cli_inprocess.py2medium31
MetricsBaselinecodeclone/metrics_baseline.py2medium713
Baselinecodeclone/baseline.py2medium711
_DummyExecutortests/test_cli_inprocess.py1low42
CacheDatacodeclone/cache.py1low00
_ArgumentParsercodeclone/_cli_args.py1low12
TestAdmissionThresholdBoundariestests/test_extractor.py2medium52
_FailingExecutortests/test_cli_inprocess.py2medium21
Blockcodeclone/cfg_model.py2medium32
_FileCachecodeclone/_html_snippets.py2medium43
_InlineExecutortests/test_golden_v2.py1low10
_DummyProgresstests/test_cli_inprocess.py1low52
ReportArtifactsscripts/build_docs_example_report.py1low00
_StatementRecordcodeclone/report/explain.py1low00
QualnameCollectorcodeclone/qualnames.py1low59
BootstrapResultcodeclone/pipeline.py1low00
Suggestioncodeclone/models.py1low00
StructuralFindingGroupcodeclone/models.py1low00
PublicSymbolcodeclone/models.py1low00
ModuleApiSurfacecodeclone/models.py1low00
MetricsDiffcodeclone/models.py1low00
FunctionGroupItemcodeclone/models.py1low00
DepGraphcodeclone/models.py1low00
CoverageJoinResultcodeclone/models.py1low00
ApiSurfaceSnapshotcodeclone/models.py1low00
_CoverageReportcodeclone/metrics/coverage_join.py1low00
MCPServiceContractErrorcodeclone/mcp_service.py1low00
MCPRunRecordcodeclone/mcp_service.py1low00
MCPRunNotFoundErrorcodeclone/mcp_service.py1low00
MCPGitDiffErrorcodeclone/mcp_service.py1low00
MCPFindingNotFoundErrorcodeclone/mcp_service.py1low00
_ModuleWalkStatecodeclone/extractor.py1low00
ValidationErrorcodeclone/errors.py1low00
ParseErrorcodeclone/errors.py1low00
FileProcessingErrorcodeclone/errors.py1low00
CacheErrorcodeclone/errors.py1low00
BaselineValidationErrorcodeclone/errors.py1low11
BaselineSchemaErrorcodeclone/errors.py1low00
CFGcodeclone/cfg_model.py1low24
_TryLikecodeclone/cfg.py1low00
StructuralFindingGroupDictcodeclone/cache.py1low00
Overloaded ?
12
176total analyzed
Critical ?
0
Max score ?
0
Avg LOC ?
466
176modules
ModuleFile ?ScoreStatusLOCFan-in/outComplexity total
tests.test_report_contract_coveragetests/test_report_contract_coverage.py0.9814candidate28190/930
tests.test_reporttests/test_report.py0.9747candidate31720/1374
codeclone.cachecodeclone/cache.py0.9733candidate280311/8307
codeclone.report.json_contractcodeclone/report/json_contract.py0.9698candidate29189/11148
codeclone.clicodeclone/cli.py0.9694candidate17413/2079
tests.test_cli_inprocesstests/test_cli_inprocess.py0.9644candidate42670/12153
tests.test_html_reporttests/test_html_report.py0.9591candidate32270/1165
codeclone.mcp_servicecodeclone/mcp_service.py0.9556candidate47272/17333
tests.test_cli_unittests/test_cli_unit.py0.9496candidate21410/1757
codeclone.baselinecodeclone/baseline.py0.9369candidate76714/580
codeclone.extractorcodeclone/extractor.py0.9319candidate11494/1392
codeclone.metrics_baselinecodeclone/metrics_baseline.py0.9198candidate13174/995
codeclone.report.overviewcodeclone/report/overview.py0.9272non_candidate7754/687
codeclone.report.sarifcodeclone/report/sarif.py0.9263non_candidate9903/786
tests.test_cachetests/test_cache.py0.9163non_candidate19210/754
codeclone.pipelinecodeclone/pipeline.py0.8955non_candidate27738/23149
tests.test_metrics_modulestests/test_metrics_modules.py0.8753non_candidate6280/49
tests.test_html_report_helperstests/test_html_report_helpers.py0.8714non_candidate5800/1512
tests.test_cfgtests/test_cfg.py0.8683non_candidate8310/639
tests.test_metrics_baselinetests/test_metrics_baseline.py0.8647non_candidate10470/531
tests.test_baselinetests/test_baseline.py0.8644non_candidate12690/362
codeclone.report.suggestionscodeclone/report/suggestions.py0.8501non_candidate7856/740
codeclone.structural_findingscodeclone/structural_findings.py0.846non_candidate10479/3121
codeclone._html_report._sections._clonescodeclone/_html_report/_sections/_clones.py0.8397non_candidate8402/1867
tests.test_mcp_servicetests/test_mcp_service.py0.8366non_candidate39340/857
tests.test_normalizetests/test_normalize.py0.8254non_candidate4790/49
tests.test_structural_findingstests/test_structural_findings.py0.8245non_candidate9630/317
codeclone.report.derivedcodeclone/report/derived.py0.819non_candidate2815/421
codeclone.report.serializecodeclone/report/serialize.py0.8158non_candidate8784/368
codeclone._html_report._sections._metacodeclone/_html_report/_sections/_meta.py0.8146non_candidate5582/530
tests.test_mcp_servertests/test_mcp_server.py0.8061non_candidate7330/412
tests.test_golden_v2tests/test_golden_v2.py0.8061non_candidate3380/1018
tests.test_report_branch_invariantstests/test_report_branch_invariants.py0.7997non_candidate3810/107
tests.test_core_branch_coveragetests/test_core_branch_coverage.py0.7977non_candidate10040/1013
codeclone._cli_baselinescodeclone/_cli_baselines.py0.7949non_candidate4593/655
tests.test_scanner_extratests/test_scanner_extra.py0.7907non_candidate3160/220
tests.test_extractortests/test_extractor.py0.7904non_candidate17740/648
codeclone.normalizecodeclone/normalize.py0.7884non_candidate25015/120
codeclone._html_report._sections._overviewcodeclone/_html_report/_sections/_overview.py0.7779non_candidate10652/663
codeclone.blockscodeclone/blocks.py0.7728non_candidate1325/317
codeclone._html_report._sections._structuralcodeclone/_html_report/_sections/_structural.py0.77non_candidate5603/1422
codeclone.report.markdowncodeclone/report/markdown.py0.7692non_candidate6593/633
codeclone._html_report._contextcodeclone/_html_report/_context.py0.7636non_candidate29711/617
codeclone._html_report._sections._dependenciescodeclone/_html_report/_sections/_dependencies.py0.7617non_candidate4732/736
codeclone.metrics.api_surfacecodeclone/metrics/api_surface.py0.7577non_candidate4213/338
codeclone.modelscodeclone/models.py0.7557non_candidate42551/00
codeclone._html_report._assemblecodeclone/_html_report/_assemble.py0.7553non_candidate4371/2011
codeclone._html_snippetscodeclone/_html_snippets.py0.7469non_candidate2079/127
codeclone.cache_iocodeclone/cache_io.py0.7447non_candidate663/10
tests.test_pipeline_metricstests/test_pipeline_metrics.py0.744non_candidate11070/416
Do module dependencies form cycles?
Cycles: 0; max dependency depth: 11.
Modules ?
255
1386imports
Edges ?
1386
5.4avg/module
Max depth ?
11
< 8target
Cycles ?
0
cleanstatus
Top connected__future__139typing94abc71cli65pathlib59
__future____future__astastcodeclonecodeclonecodeclone.baselinebaselinecodeclone.cachecachecodeclone.cliclicodeclone.contractscontractscodeclone.extractorextractorcodeclone.mcp_servicemcp_servicecodeclone.modelsmodelscodeclone.pipelinepipelinecodeclone.report.json_contractjson_contractcodeclone.report.sarifsarifcollections.abcabcdataclassesdataclassespathlibpathlibpytestpytesttests.test_cli_unittest_cli_unittests.test_report_contract_coveragetest_rep..coveragetypingtyping
Hub Leaf Cycle

Longest chains

Longest chain ?Length ?
test_htm.._helpers_assemble_coupling_coverage_join_tables_contextoverviewderivedpathssource_scope__future__11
test_mcp_servermcp_servermcp_servicepipelinemarkdownjson_contractoverviewderivedpathssource_scope__future__11
_assemble_coupling_coverage_join_tables_contextoverviewderivedpathssource_scope__future__10
mcp_servermcp_servicepipelinemarkdownjson_contractoverviewderivedpathssource_scope__future__10
test_cli_unitclipipelinemarkdownjson_contractoverviewderivedpathssource_scope__future__10

Detected cycles

No dependency cycles detected.
Nothing to report - keep up the good work.
Do we have actionable unused code?
0 candidates total; 0 high-confidence items; 1 suppressed.
Candidates ?
0
0active
High confidence ?
0
0of total
Suppressed ?
1
Hit rate ?
0%
high vs total
No dead code detected.
Nothing to report - keep up the good work.
Name ?File ?Line ?Kind ?Confidence ?RuleSource
resolve_install_target.github/actions/codeclone/_action_impl.py110functionhighdead-codeinline_codeclone
What should be prioritized next?
No suggestions were generated for this run.
No suggestions generated.
Nothing to report - keep up the good work.
What are structural findings?
Repeated non-overlapping branch-body shapes detected inside individual functions. These are local, report-only refactoring hints and do not affect clone detection or CI verdicts.
No structural findings detected.
Nothing to report - keep up the good work.
Verified

Report Provenance

Baseline verified · cache miss · full mode

verifiedBaseline2.8Schema1FingerprintmissCachefullModeverifiedMetrics baselineBaseline-aware · contract-verified

General

CodeClone2.0.0b5
Projectcodeclone
Report schema2.8
Scan root/home/runner/work/codeclone/codeclone
Python3.13
Python tagcp313
Analysis modefull
Report modefull
Report generated (UTC)2026-04-16T13:36:48Z
Metrics computedcomplexity, coupling, cohesion, health, dependencies, dead_code, coverage_adoption
Health score89
Health gradeB
Source IO skipped0

Clone Baseline

Baseline filecodeclone.baseline.json
Baseline path/home/runner/work/codecl…lone/codeclone.baseline.json
Baseline statusok
Baseline loadedloaded
Baseline fingerprint1
Baseline schema2.1
Baseline Python tagcp313 matches runtime
Baseline generator namecodeclone
Baseline generator version2.0.0b5
Baseline payload sha25607a383c1…0bd029e8
Baseline payload verifiedverified

Metrics Baseline

Metrics baseline path/home/runner/work/codecl…lone/codeclone.baseline.json
Metrics baseline loadedloaded
Metrics baseline statusok
Metrics baseline schema2.1
Metrics baseline payload sha256122ee5d2…6ba18e04
Metrics baseline payload verifiedverified

Cache

Cache path/home/runner/work/codecl…/.cache/codeclone/cache.json
Cache statusmissing
Cache usedmiss

Integrity

Canonicalization version1
Canonicalization scopecanonical_only
Canonical sectionsreport_schema_version, meta, inventory, findings, metrics
Digest algorithmsha256
Digest valuefeebebef…b3b4ca13
Digest verifiedverified