Skip to main content

normalize_syntax_rules/builtin/
mod.rs

1//! Embedded builtin rules for syntax-based linting.
2//!
3//! Rules are embedded at compile time and loaded as the lowest-priority source.
4//! Users can override or disable them via ~/.config/moss/rules/ or .normalize/rules/.
5
6use crate::BuiltinRule;
7
8/// All embedded builtin rules.
9pub const BUILTIN_RULES: &[BuiltinRule] = &[
10    // Rust rules
11    BuiltinRule {
12        id: "rust/todo-macro",
13        content: include_str!("rust_todo_macro.scm"),
14    },
15    BuiltinRule {
16        id: "rust/println-debug",
17        content: include_str!("rust_println_debug.scm"),
18    },
19    BuiltinRule {
20        id: "rust/dbg-macro",
21        content: include_str!("rust_dbg_macro.scm"),
22    },
23    BuiltinRule {
24        id: "rust/expect-empty",
25        content: include_str!("rust_expect_empty.scm"),
26    },
27    BuiltinRule {
28        id: "rust/unwrap-in-impl",
29        content: include_str!("rust_unwrap_in_impl.scm"),
30    },
31    BuiltinRule {
32        id: "rust/unnecessary-let",
33        content: include_str!("rust_unnecessary_let.scm"),
34    },
35    BuiltinRule {
36        id: "rust/unnecessary-type-alias",
37        content: include_str!("rust_unnecessary_type_alias.scm"),
38    },
39    BuiltinRule {
40        id: "rust/chained-if-let",
41        content: include_str!("rust_chained_if_let.scm"),
42    },
43    BuiltinRule {
44        id: "rust/numeric-type-annotation",
45        content: include_str!("rust_numeric_type_annotation.scm"),
46    },
47    BuiltinRule {
48        id: "rust/tuple-return",
49        content: include_str!("rust_tuple_return.scm"),
50    },
51    BuiltinRule {
52        id: "hardcoded-secret",
53        content: include_str!("hardcoded_secret.scm"),
54    },
55    // JavaScript/TypeScript rules
56    BuiltinRule {
57        id: "js/console-log",
58        content: include_str!("js_console_log.scm"),
59    },
60    BuiltinRule {
61        id: "js/unnecessary-const",
62        content: include_str!("js_unnecessary_const.scm"),
63    },
64    BuiltinRule {
65        id: "typescript/tuple-return",
66        content: include_str!("typescript_tuple_return.scm"),
67    },
68    // Python rules
69    BuiltinRule {
70        id: "python/print-debug",
71        content: include_str!("python_print_debug.scm"),
72    },
73    BuiltinRule {
74        id: "python/breakpoint",
75        content: include_str!("python_breakpoint.scm"),
76    },
77    BuiltinRule {
78        id: "python/tuple-return",
79        content: include_str!("python_tuple_return.scm"),
80    },
81    // Go rules
82    BuiltinRule {
83        id: "go/fmt-print",
84        content: include_str!("go_fmt_print.scm"),
85    },
86    BuiltinRule {
87        id: "go/many-returns",
88        content: include_str!("go_many_returns.scm"),
89    },
90    // Ruby rules
91    BuiltinRule {
92        id: "ruby/binding-pry",
93        content: include_str!("ruby_binding_pry.scm"),
94    },
95    // Cross-language rules
96    BuiltinRule {
97        id: "no-todo-comment",
98        content: include_str!("no_todo_comment.scm"),
99    },
100    BuiltinRule {
101        id: "no-fixme-comment",
102        content: include_str!("no_fixme_comment.scm"),
103    },
104];