-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path.coderabbit.yaml
More file actions
149 lines (123 loc) · 4.74 KB
/
.coderabbit.yaml
File metadata and controls
149 lines (123 loc) · 4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
version: 1
language: cpp
rules:
# ========== Naming ==========
- id: file_naming
pattern: '^[a-z][a-z0-9_]+(\.h|\.hpp|\.cc|\.cpp|\.cxx)?$'
message: "Dateinamen müssen klein und mit Unterstrichen sein (z. B. `my_class.cc`)."
severity: warning
- id: type_naming
pattern: '^[A-Z][a-zA-Z0-9]+$'
message: "Typen (Klassen, Structs, Typedefs) müssen PascalCase sein (z. B. `MyClass`)."
severity: warning
- id: variable_naming
pattern: '^[a-z][a-zA-Z0-9]+$'
message: "Variablen und Funktionen müssen camelCase sein (z. B. `myVariable`)."
severity: warning
- id: constant_naming
pattern: '^[kA-Z][A-Z0-9_]+$'
message: "Konstanten müssen mit `k` beginnen und PascalCase sein (z. B. `kMyConstant`)."
severity: warning
- id: macro_naming
pattern: '^[A-Z][A-Z0-9_]+_$'
message: "Macros müssen in SCREAMING_CASE enden mit `_` (z. B. `MY_MACRO_`)."
severity: warning
# ========== Formatierung ==========
- id: indentation
pattern: '^ {2}'
message: "Verwende 2 Leerzeichen für Einrückung, keine Tabs."
severity: warning
- id: brace_style
pattern: '\{\s*\n'
message: "Öffnende Klammern `{` gehören auf die gleiche Zeile (z. B. `class Foo {`)."
severity: warning
- id: line_length
max_length: 80
message: "Zeilen dürfen nicht länger als 80 Zeichen sein."
severity: warning
- id: function_declaration
pattern: '\w+\s+\w+\([^)]*\)\s*\n\s*\{'
message: "Funktionsrückgabetyp und -name müssen in einer Zeile stehen. Öffnende Klammer auf gleicher Zeile."
severity: warning
# ========== Header ==========
- id: header_guard
pattern: '#ifndef [A-Z_]+_H_|#define [A-Z_]+_H_|#endif'
message: "Header-Guards müssen im Format `PROJECT_PATH_FILE_H_` sein."
severity: warning
- id: include_order
message: |
Includes müssen in dieser Reihenfolge sein:
1. C-System-Header (z. B. `<sys/types.h>`)
2. C++-Standard-Header (z. B. `<vector>`)
3. Projekt-Header (z. B. `"my_project/my_file.h"`)
4. Leerzeile zwischen den Gruppen.
severity: warning
# ========== Modern C++ ==========
- id: no_raw_pointers
pattern: '\bnew\s+\w+|delete\s+\w+'
message: "Vermeide `new`/`delete`. Verwende `std::unique_ptr` oder `std::shared_ptr`."
severity: warning
- id: use_auto
pattern: '\w+\s+\w+\s*=\s*new\s+\w+'
message: "Verwende `auto` für lokale Variablen, wenn der Typ offensichtlich ist."
severity: warning
- id: const_correctness
pattern: '\w+\s+\*[^=]+='
message: "Verwende `const` für Pointer/Referenzen, wenn möglich."
severity: warning
- id: override_specifier
pattern: 'virtual\s+\w+\s*\([^)]*\)\s*(?!override)'
message: "Verwende `override` oder `final` für virtuelle Methoden."
severity: warning
# ========== Sicherheit ==========
- id: no_magic_numbers
pattern: '[0-9]+'
message: "Vermeide 'Magic Numbers'. Verwende benannte Konstanten."
severity: warning
- id: no_c_style_casts
pattern: '\((\w+)\)[^;]+;'
message: "Vermeide C-Style-Casts. Verwende `static_cast`, `dynamic_cast`, etc."
severity: warning
- id: bounds_checking
pattern: '\[\s*[a-zA-Z0-9]+\s*\]'
message: "Stelle sicher, dass Array-Zugriffe bounds-geprüft sind oder `at()` verwendet wird."
severity: warning
# ========== Google-spezifisch ==========
- id: google_ownership
pattern: 'std::shared_ptr<'
message: "Vermeide `std::shared_ptr` wo möglich. Bevorzuge `std::unique_ptr`."
severity: warning
- id: google_abseil
pattern: 'std::string'
message: "Verwende `absl::string_view` statt `const std::string&` für Read-Only-Strings."
severity: warning
- id: google_re2
pattern: 'std::regex'
message: "Verwende `RE2` statt `std::regex` (Google-Standard)."
severity: warning
# ========== Tests ==========
- id: test_class_naming
pattern: 'Test[A-Z][a-zA-Z0-9]+'
message: "Test-Klassen müssen mit `Test` beginnen (z. B. `TestMyClass`)."
severity: warning
- id: test_method_naming
pattern: 'Test[A-Z][a-zA-Z0-9]+::[A-Z][a-zA-Z0-9]+'
message: "Test-Methoden müssen camelCase sein und mit dem getesteten Szenario beginnen (z. B. `TestMyClass::HandlesError`)."
severity: warning
# ========== Verboten ==========
- id: no_global_variables
pattern: '^\w+\s+\w+\s*;'
message: "Vermeide globale Variablen. Verwende Singleton oder Dependency Injection."
severity: error
- id: no_exceptions
pattern: 'throw\s+|try\s+\{'
message: "Vermeide Exceptions (Google-Standard). Verwende Error-Codes oder `absl::Status`."
severity: error
# Ausnahmen für Third-Party-Code
exceptions:
- path: 'third_party/'
rules: []
- path: 'tests/'
rules:
- id: no_global_variables
severity: warning