core

module
v0.2.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2026 License: MIT

README

polyscan core

Shared Go module that provides language-agnostic code analysis algorithms for the polyscan family of analyzers: pyscn (Python) and jscan (JavaScript/TypeScript, in this monorepo).

Packages

Package Description
apted/ APTED tree edit distance algorithm with configurable cost models and normalization
cbo/ Coupling Between Objects (CBO) metric over language-provided dependency references
cfg/ Control Flow Graph data structures, reachability analysis, McCabe cyclomatic complexity, dead code detection
clone/ AST feature extraction, clone classification, 5 clone grouping strategies (Connected, KCore, StarMedoid, CompleteLinkage, Centroid), and group dedup post-passes
dfa/ Data-flow analysis framework over CFGs with language-injected variable reference extraction
domain/ Shared type definitions, thresholds, and error taxonomy
graph/ Directed graph abstraction, Tarjan SCC cycle detection, longest dependency chains over the SCC condensation, Robert Martin coupling metrics
lcom/ LCOM4 lack-of-cohesion metric over method/attribute access maps
lsh/ Locality-Sensitive Hashing index and MinHash signatures
nesting/ Nesting depth analysis with language-injected nesting classifiers
semantic/ CFG structural feature extraction for semantic clone similarity
source/ File collection with include/exclude filters
util/ Common utilities (browser opener)

Install

go get github.com/ludo-technologies/polyscan/core

Design

Language-specific behavior is injected via interfaces and callbacks:

  • graph.DirectedGraph — pyscn's map[string]*ModuleNode and jscan's domain.DependencyGraph both implement this
  • cfg.StatementClassifier — abstracts return/break/continue/throw detection across languages
  • cfg.ComplexityContributor — allows language-specific complexity additions (e.g. jscan's logical operators)
  • graph.CouplingConfig.AbstractnessFunc — injects language-specific abstractness calculation
  • clone.GroupingStrategy[T] — generic grouping with Go 1.24 generics for type-safe usage
  • apted.CostModel — language-specific tree edit cost models (PythonCostModel, JavaScriptCostModel stay in each project)
  • dfa.RefExtractor — language-specific extraction of variable definitions and uses
  • nesting.NestingClassifier — language-specific rules for which AST nodes introduce nesting

Requirements

Go 1.24+

License

MIT

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL