SPrinter
1.0.0
C ++ 프로그램에서 스마트 포인터 오류를 찾기위한 정적 체커
C ++ 스마트 포인터의 API 오용을 감지하기위한 정적 코딩 스타일 체커로 메모리 누출, 무료 후 사용 및 이중 무료와 같은 메모리 오류로 이어질 수 있습니다.
STL 컨테이너에 사용 된 auto_ptr 템플릿 인수를보고하십시오.
std::vector<std::auto_ptr< int >> vi;
^
Warn here 한 auto_ptr 에서 다른 메모리 전송을 모든 메모리 전송을보고합니다.
std::auto_ptr< int > p1 ( new int ( 42 ));
void foo (std::auto_ptr< int > p);
foo (p1);
^
Warn here 스마트 포인터 관찰자에서 포인터를 delete 하는 작업을보고하십시오.
std::unique_ptr< int > p = std::make_unique< int >( 42 );
delete p.get();
^
Warn here비 할당 메모리로 시작을보고하십시오.
int I;
std::unique_ptr< int > p (&I);
^
Warn here 사본 생성자 및 할당 연산자가없는 클래스에서 개인 auto_ptr 필드를보고하십시오.
class Type {
private:
std::auto_ptr< int > p;
^
Warn here
};원시 포인터 변수로 스마트 포인터의 구성을보고하십시오.
void foo ( int *p) {
std::unique_ptr< int > sp (p);
^
Warn here
} 스마트 포인터 구성을 위해 불일치 한 유형의 템플릿 인수 및 new 연산자를보고하십시오.
std::auto_ptr< int > sp ( new int [ 42 ]);
^
Warn here 확인되지 않은 잠긴 weak_ptr s의 사용법을보고하십시오.
std::weak_ptr< int > wp;
...
*wp.lock() = 42 ;
^
Warn here 거래되지 않은 release D 포인터를보고하십시오.
std::unique_ptr< int > sp;
...
*sp.release() = 42 ;
^
Warn here스프린터가있는 Clang-tidy (SHA256SUM 2C237C9A7E280F91D705ED6E16E16189C0A63B17643F09F3E233B2F7E6ECC712272)
소스 코드가 필요한 경우 저희에게 연락하십시오.
smartpointersafety- 접두사를 활성화하십시오.예를 들어
$ clang-tidy -checks= ' -*,smartpointersafety-* ' source.cpp