Zum Hauptinhalt springen
ai-slop/cpp-c-style-castmanuelle Behebung

C-Style-Cast.

Ein C-Style-Cast wie `(int)x` oder `(double)total` in C++-Code. Er kann eine static-, const- oder reinterpret-Konvertierung durchführen, und nichts in der Syntax verrät, welche.

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-c-style-cast.cpp
✗ Beanstandet
double average(const std::vector<int>& values) {
    long total = std::accumulate(values.begin(), values.end(), 0L);
    return (double)total / (int)values.size();
}
Warum das anschlägt

Deterministischer Zeilenabgleich auf maskiertem Quelltext: beanstandet in C++-Dateien einen eingeklammerten eingebauten Typ (`int`, `char`, `short`, `long`, `float`, `double`, `bool`, `size_t`, Integer fester Breite, optional `unsigned`, `signed`, `const` oder ein Pointer), auf den ein Ausdruck folgt.

cpp-c-style-cast.cpp
✓ Sauber
double average(const std::vector<int>& values) {
    long total = std::accumulate(values.begin(), values.end(), 0L);
    return static_cast<double>(total) / static_cast<double>(values.size());
}
Was sich geändert hat

Nutze `static_cast` für Wertkonvertierungen und `reinterpret_cast` oder `const_cast` nur dort, wo genau das gemeint ist, damit Reviewer sehen, welche Art von Konvertierung passiert.

Agenten, die auf gemischtem C- und C++-Code trainiert wurden, greifen zur kürzeren C-Syntax. Sie kompiliert und verbirgt, ob die Konvertierung sicher ist.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/cpp-c-style-cast

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich auf maskiertem Quelltext: beanstandet in C++-Dateien einen eingeklammerten eingebauten Typ (`int`, `char`, `short`, `long`, `float`, `double`, `bool`, `size_t`, Integer fester Breite, optional `unsigned`, `signed`, `const` oder ein Pointer), auf den ein Ausdruck folgt.

Legitimer Code, der NICHT beanstandet wird

`.c`- und `.h`-Dateien, Casts auf Klassen oder andere benutzerdefinierte Typen sowie benannte Casts wie `static_cast<int>(x)` 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.