Skip to main content

Multi-language code quality scanner — complexity, duplication, security, and smells

Project description

qlint

Multi-language code quality scanner. Walks any codebase and produces JSON + HTML reports covering complexity, duplication, security, and code smells.

Install

pip install -e .

Usage

qlint /path/to/repo          # scan and open HTML report
qlint /path/to/repo --no-open
qlint /path/to/repo --json-only
qlint /path/to/repo -v       # verbose per-file output
qlint                        # interactive: prompts for path

Reports are written to ~/Downloads/qlint-reports/<repo>/.

Options

Flag Description
--output, -o Custom JSON output path
--html Custom HTML output path
--json-only Skip HTML, print JSON to stdout
--no-open Do not auto-open HTML report
--verbose, -v Show per-file progress
--version Show version

Analysis Features

Feature What it detects
Complexity Cyclomatic complexity per function, flags > 10
Duplication Duplicate 6-line blocks across files
Security Hardcoded secrets, dangerous functions (eval, exec, …)
Code Smells Long functions, deep nesting, long parameter lists
Git Risk risk = (complexity × churn) / authors — predicts high-debt files using git history

Languages

Python, JavaScript, TypeScript, Java, Go, Ruby, Rust, C, C++, C#, PHP, Swift, Kotlin, Scala, Shell, HTML, CSS, SQL, YAML, JSON, and more.

JSON Output

{
  "scanId": "...",
  "timestamp": "...",
  "repository": { "path": "...", "totalFiles": 42, "totalLines": 8500, "languages": {} },
  "files": [
    {
      "path": "src/main.py",
      "language": "Python",
      "metrics": { "loc": 120, "code": 95, "comments": 10, "blank": 15, "functions": 8, "classes": 2, "complexity": 4.2 },
      "smells": [],
      "security_issues": [],
      "git_risk": { "commits": 12, "churn": 340, "authors": 2, "risk_score": 25.5 }
    }
  ],
  "qualityScore": 87,
  "grade": "B",
  "gitRisk": {
    "available": true,
    "top_risk_files": []
  }
}

Development

make install   # pip install -e ".[dev]"
make lint      # ruff check
make format    # ruff format
make build     # python3 -m build

Requirements

  • Python 3.11+
  • git in PATH (for git risk analysis; optional)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qlint-0.2.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qlint-0.2.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file qlint-0.2.0.tar.gz.

File metadata

  • Download URL: qlint-0.2.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for qlint-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0a53656ea204303ad0c7caa5214ee5dbfd9e6918dd276273642e5dfa6936e55e
MD5 f1978badeac9654ff17c2748c82dfc5e
BLAKE2b-256 f16b9cda3210790e933728c7ca9b08d9b6954c4cbbdfff0141c8523b2f207a50

See more details on using hashes here.

File details

Details for the file qlint-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: qlint-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for qlint-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2b418af7f266806bc21a642f8b7c2a6c9509f92a20e409eebf1333546e26a137
MD5 ba77c2936fc37e6ca719f121ecfd02b7
BLAKE2b-256 f9120a3f3841a4d449d3e44d5e215c879c70b57f8f5bacdccce92ca5186c9f64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page