Documentation

LE005: COMPILER LINTER PLUGIN (AST HOOKS + DIAGNOSTICS + MULTI-RULE)

Back to documentation index
---
{
  "@context": "https://nxdlang.org/schema",
  "doc_id": "LE005",
  "title": "",
  "description": "",
  "layer": "Examples",
  "category": "Large Examples",
  "keywords": [],
  "doc_version": "1.0",
  "status": "active"
}
---

# LE005: COMPILER LINTER PLUGIN (AST HOOKS + DIAGNOSTICS + MULTI-RULE)

### NXD
```nxd
MODULE lint.rules

PLUGIN LINTER:
    ON AST(VAR_DECL):
        IF DECL.NAME EQ "tmp":
            DIAGNOSTIC W2001 "avoid tmp variable names"

    ON AST(FUNC_CALL):
        IF CALL.NAME EQ "DEBUG":
            DIAGNOSTIC W3001 "debug call in production"

    ON AST(BINARY_OP):
        IF OP.NAME EQ "DIV" AND OP.RIGHT EQ 0:
            DIAGNOSTIC E8001 "division by zero"
    END


MODULE app.main
IMPORT lint.rules

FUNC MAIN():
    LET tmp SET 10   # warning
    LET A SET 10 DIV 0   # error
    DEBUG("test")    # warning
    RETURN NONE
```