pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
137 lines (136 loc) • 4.63 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "pi-lens tree-sitter query rule",
"description": "A single tree-sitter query rule loaded by pi-lens. Place files under rules/tree-sitter-queries/<language>/.",
"type": "object",
"required": ["id", "query"],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "Unique rule identifier (kebab-case recommended). Must be unique within the language."
},
"name": {
"type": "string",
"description": "Human-readable rule name. Defaults to id."
},
"severity": {
"type": "string",
"enum": ["error", "warning", "info"],
"description": "Diagnostic severity. Defaults to 'warning'."
},
"category": {
"type": "string",
"description": "Broad category label, e.g. 'security', 'performance', 'correctness'. Defaults to 'general'."
},
"language": {
"type": "string",
"description": "Language override. Normally inferred from the directory name.",
"enum": [
"typescript", "javascript", "tsx",
"python", "go", "rust",
"java", "csharp", "kotlin",
"ruby", "cpp", "c",
"css", "php", "plsql", "abap", "cobol"
]
},
"message": {
"type": "string",
"description": "Short diagnostic message shown inline. Defaults to 'Pattern: <id>'."
},
"description": {
"type": "string",
"description": "Extended explanation shown in the detail view. Markdown supported."
},
"query": {
"type": "string",
"description": "Tree-sitter S-expression query. Capture names should use @UPPER_SNAKE convention."
},
"metavars": {
"type": "array",
"items": { "type": "string" },
"description": "Capture names to surface as evidence. Auto-extracted from @VAR patterns in the query if omitted."
},
"predicates": {
"type": "array",
"description": "Native tree-sitter predicates (run in WASM). Faster than post-filters.",
"items": {
"type": "object",
"required": ["type", "var", "value"],
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["eq", "match", "any-of"],
"description": "'eq' for exact match, 'match' for regex, 'any-of' for a list of values."
},
"var": {
"type": "string",
"description": "Capture name to test, e.g. '@FUNC_NAME'."
},
"value": {
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
],
"description": "Value(s) to match against. Use an array for 'any-of'."
}
}
}
},
"post_filter": {
"type": "string",
"description": "Named post-processing filter applied after the query matches."
},
"post_filter_params": {
"type": "object",
"description": "Parameters passed to the post_filter function.",
"additionalProperties": { "type": "string" }
},
"inline_tier": {
"type": "string",
"enum": ["blocking", "warning", "review"],
"description": "Override the dispatch tier for this rule."
},
"defect_class": {
"type": "string",
"description": "Defect classification, e.g. 'injection', 'xss', 'logic', 'race'."
},
"confidence": {
"type": "string",
"enum": ["low", "medium", "high"],
"description": "Confidence in the signal quality of this rule."
},
"tags": {
"type": "array",
"items": { "type": "string" },
"description": "Free-form tags for filtering and reporting, e.g. ['security', 'owasp-top-10']."
},
"cwe": {
"type": "array",
"items": { "type": "string" },
"description": "CWE identifiers, e.g. ['CWE-89', 'CWE-564']."
},
"owasp": {
"type": "array",
"items": { "type": "string" },
"description": "OWASP category references."
},
"has_fix": {
"type": "boolean",
"description": "Whether a machine-applicable fix is available. Defaults to false."
},
"fix_action": {
"type": "string",
"description": "Short label for the fix suggestion shown in the UI."
},
"examples": {
"type": "object",
"additionalProperties": false,
"properties": {
"bad": { "type": "string", "description": "Code that triggers this rule." },
"good": { "type": "string", "description": "Corrected version of the bad example." }
}
}
}
}