Ein statischer Checker zum Auffinden intelligenter Zeigerfehler in C ++ - Programmen
Ein statischer Kodierungsstil -Checker zum Erkennen von API -Missverzügen von C ++ - intelligenten Zeigern, die wahrscheinlich zu Speicherfehlern wie Speicherleck, nach freiem und doppeltfreiem doppelt freien Speicherfehlern führen.
Melden Sie ein auto_ptr -Vorlageargument, das in einem STL -Container verwendet wird.
std::vector<std::auto_ptr< int >> vi;
^
Warn here Melden Sie die gesamte Speicherübertragung von einem auto_ptr zu einem anderen.
std::auto_ptr< int > p1 ( new int ( 42 ));
void foo (std::auto_ptr< int > p);
foo (p1);
^
Warn here Melden Sie den Vorgang, der den Zeiger von Smartzinter -Beobachtern delete .
std::unique_ptr< int > p = std::make_unique< int >( 42 );
delete p.get();
^
Warn hereMelden Sie die Initiationen mit nicht zugeordnetem Speicher.
int I;
std::unique_ptr< int > p (&I);
^
Warn here Melden Sie ein privates auto_ptr -Feld in einer Klasse ohne Kopierkonstruktoren und Zuordnungsbetreiber.
class Type {
private:
std::auto_ptr< int > p;
^
Warn here
};Melden Sie die Konstruktion eines intelligenten Zeigers mit einer Rohzeigervariablen.
void foo ( int *p) {
std::unique_ptr< int > sp (p);
^
Warn here
} Melden Sie das nicht übereinstimmende Typ von Vorlagenargument und new Operator für intelligente Zeigerkonstruktionen.
std::auto_ptr< int > sp ( new int [ 42 ]);
^
Warn here Melden Sie die Verwendungen von deaktivierten gesperrten weak_ptr s.
std::weak_ptr< int > wp;
...
*wp.lock() = 42 ;
^
Warn here Melden Sie den release -D -Zeiger, der nicht umgegeben wird.
std::unique_ptr< int > sp;
...
*sp.release() = 42 ;
^
Warn hereKlang-Tidy mit Sprinter (SHA256SUM 2C237C9A7E280F91D705ED6E16189C0A63B17643F09F3E233B2F7E6ECC712272)
Bitte kontaktieren Sie uns, wenn Sie den Quellcode benötigen.
smartpointersafety- Präfix für alle oben genannten Fehlermuster.Z.B
$ clang-tidy -checks= ' -*,smartpointersafety-* ' source.cpp