ludo-technologies / ludo-technologies/polyscan

Phase 4: goscan — Go analyzer born in the monorepo

Open
#13 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
12
Forks
7
Avg merge
5h 46m
Merged PRs (30d)
49

Description

Create `goscan/`, a Go-language analyzer built on `core/` from day one. This is the validation of the whole extraction (rule of three): a new language should only need the adapter layer.

Blocked by Phase 2 (#8–#11); recommended after Phase 3 (#12) so the core API is proven by two adopters.

## Adapter surface to implement (everything else comes from core)

- [ ] Parser adapter: `go/ast` (stdlib) → `core/apted.TreeNode` conversion + fragment extraction
- [ ] CFG builder for Go control flow (defer/goto/select/labeled break) targeting `core/cfg.CFG`
- [ ] `StatementClassifier`/`NoOpClassifier`, `ComplexityContributor` (short-circuit operators), Go `CostModel`, `CommentStripper` (`//`, `/* */`)
- [ ] Module resolution for the dependency graph (go.mod-aware imports; `AbstractnessFunc` = interface/exported ratio)
- [ ] Scoring policy: pick complexity/dead-code penalty formulas (start from jscan's count-ratio approach)
- [ ] CLI + report layer (reuse jscan's structure), `goscan/vX.Y.Z` release setup

## Positioning notes

- Competitor gap: staticcheck/golangci-lint don't do clone detection or health scoring; `dupl` is weak — clone detection + health score is the differentiator
- Timing is a product decision: infrastructure cost is low after Phase 2/3, so this can wait for demand signal

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Contributor guide

Open the contributing guide

Research direction

Start by reading the Phase 2 core work and Phase 3 jscan implementation, especially core/apted.TreeNode, core/cfg.CFG, and jscan's CLI and report structure. Then map the goscan/ adapter surface around go/ast, Go control flow, go.mod-aware imports, scoring, and release setup. Done means the listed adapters, CLI, reports, and versioned release setup are implemented.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.