Skip to content
python-code-analyzer.html

Python Code Analyzer

Paste a public GitHub URL and REPO-SIGHT reads your Python source directly — complexity, classic Python footguns, and 16 rules built specifically for Python. Free.

What REPO-SIGHT checks in your Python code

16 rules, tuned for Python — 7 of them security-specific.

Complexity & structure

Cyclomatic complexity, max nesting depth (flagged past 6 levels), and functions over 100 lines — the same thresholds used in the health score.

Classic Python footguns

py-mutable-default-arg (def f(x=[])), py-mutable-class-attribute, and py-bare-except catch three of the most common ways Python code quietly misbehaves.

Wildcard imports

py-wildcard-import flags from x import *, which makes it impossible to tell where a name actually came from.

Unsafe deserialization & execution

py-sec-eval-exec, unsafe pickle.load, and unsafe yaml.load — three ways untrusted input can turn into arbitrary code execution.

Injection & weak crypto

os.system calls, subprocess with shell=True, hardcoded secrets, and weak hashes round out 7 security checks in total.

Duplication & debt

Token-based clone detection across the whole repo, plus every TODO/FIXME counted — py-todo-without-ticket flags the ones with no ticket reference.

Medium · example finding
def add_item(item, items=[]):
    items.append(item)
    return items

Illustrative example. py-mutable-default-arg: the default list is created once and shared across every call that doesn't pass its own — a classic source of state leaking between unrelated calls.

Frequently asked questions

Does REPO-SIGHT run my Python code?

No. It's static analysis only — source is parsed, never executed, so a flagged eval() or pickle.load() call is reported, not run.

How is this different from pylint, flake8, or bandit?

Those need a local install and config. REPO-SIGHT runs from a GitHub URL alone, combines quality and security checks in one pass, and rolls the result into a single project health score.

Which Python version does it support?

The parser targets standard Python 3 syntax; it's a metrics and rules engine rather than a full interpreter, so version-specific runtime behavior isn't in scope — the syntax patterns above are.

Is it actually free?

Yes — no tiers, no paywalled metrics. A small amount of advertising covers hosting instead of a paid plan.

Scan a repository in seconds.

No tiers and no paywalled metrics; a small amount of advertising pays for hosting. Sign-in is optional for public repositories and required for private ones.

Analyze a repo now