Skip to content

Filter by Category

Focus your audit on specific areas instead of running all checks.

Available Categories

Category Rules Focus
lint LintingRule, FormattingRule, DiffSizeRule, DeadCodeRule Code quality (Ruff, git)
type TypeCheckRule Type safety (mypy)
complexity ComplexityRule Cyclomatic + cognitive complexity (radon CC + complexipy Cog)
security SecurityRule, SecurityPatternRule Vulnerability detection (Bandit + patterns)
deps DependencyAuditRule, DependencyHygieneRule Supply chain (pip-audit, deptry)
testing TestCoverageRule Coverage enforcement (pytest-cov)
test_quality PrivateImportsRule Test-tree heuristics: private-symbol imports (pyramid level, tautologies, mock hygiene land incrementally)
architecture CircularImportRule, GodClassRule, CouplingMetricRule, DuplicationRule Structural analysis (AST)
practices DocstringCoverageRule, BareExceptRule, BlockingIORule, MirrorRule, AntiMirrorRule Best practices (mirror = unit-tests 1:1 with src; anti-mirror = integration/e2e must be scenario-named)
structure PyprojectCompletenessRule, TestsPyramidRule pyproject.toml completeness; test pyramid layout (unit/integration/e2e + pytest markers)
tooling ToolAvailabilityRule CLI tool availability

CLI

Bash
# Filter to one category
axm-audit audit . --category lint
axm-audit audit . --category security
axm-audit audit . --category deps

Python API

Python
from pathlib import Path
from axm_audit import audit_project

# Lint checks only
result = audit_project(Path("."), category="lint")

# Security checks only
result = audit_project(Path("."), category="security")

# Quick mode (lint + type only, fastest)
result = audit_project(Path("."), quick=True)

Get Rules Programmatically

Python
from axm_audit import get_rules_for_category

# All rules (25 instances)
rules = get_rules_for_category(None)

# Single category
rules = get_rules_for_category("lint")

# Quick mode (lint + type only)
rules = get_rules_for_category(None, quick=True)

for rule in rules:
    print(f"{type(rule).__name__}: {rule.rule_id}")