|
|
|
// Copyright (c) 2018-present, Facebook, Inc.
|
|
|
|
//
|
|
|
|
// This source code is licensed under the MIT license found in the
|
|
|
|
// LICENSE file in the root directory of this source tree.
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_CXX_COPY_CONSTRUCTOR = {
|
|
|
|
|
|
|
|
LET is_copy_constructor =
|
|
|
|
is_node("CXXConstructExpr") AND is_cxx_copy_constructor();
|
|
|
|
|
|
|
|
SET report_when =
|
|
|
|
IN-NODE VarDecl WITH-TRANSITION InitExpr
|
|
|
|
(is_copy_constructor HOLDS-EVENTUALLY )
|
|
|
|
HOLDS-EVENTUALLY;
|
|
|
|
|
|
|
|
SET message = "Found Copy Constructor";
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_STATIC_LOCAL_VAR = {
|
|
|
|
|
|
|
|
SET report_when =
|
|
|
|
WHEN is_static_local_var
|
|
|
|
HOLDS-IN-NODE VarDecl;
|
|
|
|
|
|
|
|
SET message = "Found static local var";
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_CXX_METHOD_OVERRIDES = {
|
|
|
|
SET report_when = is_cxx_method_overriding;
|
|
|
|
SET message = "%decl_name% overrides";
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_CXX_METHOD_OVERRIDES_MATCHING = {
|
|
|
|
SET report_when = WHEN is_cxx_method_overriding(REGEXP("oo::.*::SvIf::future"))
|
|
|
|
HOLDS-IN-NODE CXXMethodDecl;
|
|
|
|
SET message = "%decl_name% overriding matching method";
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_NODES_WITH_CXX_FULL_NAME = {
|
|
|
|
SET report_when = has_cxx_fully_qualified_name(REGEXP("::Foo::.*"));
|
|
|
|
SET message = "%cxx_fully_qualified_name% matches";
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_CXX_METHODS_FROM_HEADER_FILE = {
|
|
|
|
SET report_when = WHEN is_in_source_file(REGEXP("/test_included.h$"))
|
|
|
|
HOLDS-IN-NODE CXXMethodDecl;
|
|
|
|
SET message = "found C++ method %name% in %source_file%";
|
|
|
|
};
|
|
|
|
|
|
|
|
DEFINE-CHECKER FIND_LISTED_SYMBOLS = {
|
|
|
|
SET report_when = NOT is_decl() AND has_cxx_fully_qualified_name_in_custom_symbols("test");
|
|
|
|
SET message = "found usage of %cxx_fully_qualified_name%";
|
|
|
|
};
|