Skip to main content
aislop organizes its 50+ rules into six engines, each targeting a different class of problem. All six run in parallel on every scan. This page gives you a practical overview of what each engine catches so you can understand your findings, tune severities, and decide which engines matter most for your project.

Formatting

The Formatting engine enforces consistent code style using the best-in-class formatter for each language. Formatting findings carry the lowest default weight (0.3), so they inform without dominating your score.

Linting

The Linting engine catches language-specific bugs, anti-patterns, and bad practices using established, widely-trusted tools.

Code Quality

The Code Quality engine measures structural complexity, locates dead code, and identifies unused dependencies. All thresholds are configurable.

AI Slop

The AI Slop engine is what makes aislop unique. These are the patterns AI coding agents — Claude Code, Cursor, Codex, OpenCode — leave behind that pass lint and tests but quietly rot a codebase. In 0.12.0, each rule also exposes a score-impact tier so strict defects score harder than mechanical or style cleanup.
Run aislop rules to see each rule’s severity, fixability, score-impact tier, and rationale. JSON diagnostics include the same scoreImpact metadata for integrations.

Security

The Security engine finds hardcoded secrets, unsafe code constructs, and vulnerable dependencies. It carries a default weight of 1.5 — second only to AI Slop.

Architecture (opt-in)

The Architecture engine runs custom structural rules you define yourself. It is disabled by default — enable it with engines.architecture: true in .aislop/config.yml and create a .aislop/rules.yml file.

Suppressing findings inline

When you know a finding is a false positive or an intentional exception, you can suppress it without changing your config.
  • aislop-ignore-next-line suppresses findings on the next line
  • aislop-ignore-line suppresses findings on the same line
  • aislop-ignore-file (placed anywhere in the file) suppresses findings for the entire file
You can scope a suppression to one or more specific rule IDs, or omit the rule name to silence every rule on that line. Add a -- followed by a reason to document why the suppression exists. The directive works in any comment syntax (//, #, <!-- -->). Suppressed findings are excluded before scoring, and the scan output reports how many were silenced.
Blanket aislop-ignore-file directives can mask real problems. Prefer rule-scoped suppressions and always include a reason.
For the complete list of all rules with their IDs, severities, and supported languages, see the Rules Reference.