📣 New Release: codeanalyzer-python v0.3.0 #5
rahlk
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
codeanalyzer-python (canpy) v0.3.0
TL;DR — the level-2 call graph switched engines: CodeQL is gone, PyCG is in, selected with the reintroduced
--analysis-level {1,2}flag. Level 2 now scales to large applications through coupling-aware sharding with adaptive decomposition. If you pass--codeqlanywhere, you need a one-line change.--codeql/--no-codeqlno longer exist — replace them with--analysis-level 2(or drop them for level 1, the default).provenancevalues change:"codeql"→"pycg"— update anything that filters edges by provenance.codeanalyzer.semantic_analysis.codeqlpackage is removed;pycg(Apache-2.0) is a new dependency.🚀 New features
--analysis-level {1,2}(reintroduced): level 1 is the symbol table + Jedi call graph; level 2 adds PyCG-resolved edges, provenance-merged with Jedi's.--pycg-shard): instead of a flat file count, shards follow Jedi module coupling (SCC condensation so import cycles never split, plus Louvain communities), so few call edges are severed between shards. Each shard runs in a symlink mini-project that bounds PyCG to that shard's files, Ray-parallel.--pycg-shard-strategy {jedi,package},--pycg-shard-ceiling(default 100),--pycg-shard-timeout(default 120 s),--pycg-max-iter(default 50 — a divergent shard returns a partial graph instead of hanging).🐛 Fixes
module_name(just the file stem) collided on every__init__.pyand silently dropped files from shards..codeanalyzer/): dependencies resolve outside the shard bound and stay ghost nodes.uvfrom its own dependency (no morePATHfallback), falling back to pip only if the package is missing.Upgrade
Or the standalone CLI installer:
Beta Was this translation helpful? Give feedback.
All reactions