Zum Hauptinhalt springen
ai-slop/cpp-define-constantmanuelle Behebung

#define-Konstante.

`#define MAX_RETRIES 5` in C++: ein Makro als Konstante. Es hat keinen Typ, ignoriert Scopes und ist verschwunden, bevor der Debugger es sieht.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

cpp-define-constant.cpp
✗ Beanstandet
#define MAX_RETRIES 5
#define DEFAULT_TIMEOUT_MS 3000
#define SERVICE_NAME "billing"
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet in C++-Dateien `#define` eines großgeschriebenen Namens, dessen Wert mit einer Ziffer, einem Anführungszeichen, einem Minuszeichen oder einer Klammer beginnt.

cpp-define-constant.cpp
✓ Sauber
namespace billing {
constexpr int kMaxRetries = 5;
constexpr std::chrono::milliseconds kDefaultTimeout{3000};
constexpr std::string_view kServiceName = "billing";
}
Was sich geändert hat

Nutze `constexpr` (oder `const`) mit explizitem Typ, innerhalb eines Namespace oder einer Klasse, wenn die Konstante dorthin gehört.

Agenten kopieren Konstantendefinitionen aus Beispielen der C-Ära, als Makros die einzige Option waren.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/cpp-define-constant

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet in C++-Dateien `#define` eines großgeschriebenen Namens, dessen Wert mit einer Ziffer, einem Anführungszeichen, einem Minuszeichen oder einer Klammer beginnt.

Legitimer Code, der NICHT beanstandet wird

`.c`- und `.h`-Dateien, Include-Guards und andere Defines ohne Wert sowie funktionsartige Makros wie `#define MAX(a, b)` werden nicht beanstandet.

Belege

Teil des C/C++-Regelsatzes von aislop. C/C++-Unterstützung, einschließlich C/C++-spezifischer AI-Slop-Regeln, kam mit aislop v0.14.1.