Skip to content

Commit 2bcccdd

Browse files
authored
[clang-tidy] Rename 'cert-dcl50-cpp' to 'modernize-avoid-variadic-functions' (#157737)
Chose `modernize` section because we already have `modernize-avoid-bind`, `modernize-avoid-c-arrays` and this check sound modernize-ish (but next place it could go is `misc` I guess). Closes #157301.
1 parent 096c62c commit 2bcccdd

File tree

11 files changed

+55
-22
lines changed

11 files changed

+55
-22
lines changed

clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "../misc/NonCopyableObjects.h"
2929
#include "../misc/StaticAssertCheck.h"
3030
#include "../misc/ThrowByValueCatchByReferenceCheck.h"
31+
#include "../modernize/AvoidVariadicFunctionsCheck.h"
3132
#include "../performance/MoveConstructorInitCheck.h"
3233
#include "../readability/EnumInitialValueCheck.h"
3334
#include "../readability/UppercaseLiteralSuffixCheck.h"
@@ -41,7 +42,6 @@
4142
#include "ProperlySeededRandomGeneratorCheck.h"
4243
#include "SetLongJmpCheck.h"
4344
#include "ThrownExceptionTypeCheck.h"
44-
#include "VariadicFunctionDefCheck.h"
4545

4646
namespace {
4747

@@ -245,7 +245,8 @@ class CERTModule : public ClangTidyModule {
245245
.registerCheck<bugprone::PointerArithmeticOnPolymorphicObjectCheck>(
246246
"cert-ctr56-cpp");
247247
// DCL
248-
CheckFactories.registerCheck<VariadicFunctionDefCheck>("cert-dcl50-cpp");
248+
CheckFactories.registerCheck<modernize::AvoidVariadicFunctionsCheck>(
249+
"cert-dcl50-cpp");
249250
CheckFactories.registerCheck<bugprone::ReservedIdentifierCheck>(
250251
"cert-dcl51-cpp");
251252
CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>(

clang-tools-extra/clang-tidy/cert/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ add_clang_library(clangTidyCERTModule STATIC
1515
ProperlySeededRandomGeneratorCheck.cpp
1616
SetLongJmpCheck.cpp
1717
ThrownExceptionTypeCheck.cpp
18-
VariadicFunctionDefCheck.cpp
1918

2019
LINK_LIBS
2120
clangTidy
2221
clangTidyBugproneModule
2322
clangTidyConcurrencyModule
2423
clangTidyGoogleModule
2524
clangTidyMiscModule
25+
clangTidyModernizeModule
2626
clangTidyPerformanceModule
2727
clangTidyReadabilityModule
2828
clangTidyUtils

clang-tools-extra/clang-tidy/cert/VariadicFunctionDefCheck.cpp renamed to clang-tools-extra/clang-tidy/modernize/AvoidVariadicFunctionsCheck.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include "VariadicFunctionDefCheck.h"
9+
#include "AvoidVariadicFunctionsCheck.h"
1010
#include "clang/ASTMatchers/ASTMatchFinder.h"
1111

1212
using namespace clang::ast_matchers;
1313

14-
namespace clang::tidy::cert {
14+
namespace clang::tidy::modernize {
1515

16-
void VariadicFunctionDefCheck::registerMatchers(MatchFinder *Finder) {
16+
void AvoidVariadicFunctionsCheck::registerMatchers(MatchFinder *Finder) {
1717
// We only care about function *definitions* that are variadic, and do not
1818
// have extern "C" language linkage.
1919
Finder->addMatcher(
@@ -22,12 +22,13 @@ void VariadicFunctionDefCheck::registerMatchers(MatchFinder *Finder) {
2222
this);
2323
}
2424

25-
void VariadicFunctionDefCheck::check(const MatchFinder::MatchResult &Result) {
25+
void AvoidVariadicFunctionsCheck::check(
26+
const MatchFinder::MatchResult &Result) {
2627
const auto *FD = Result.Nodes.getNodeAs<FunctionDecl>("func");
2728

2829
diag(FD->getLocation(),
2930
"do not define a C-style variadic function; consider using a function "
3031
"parameter pack or currying instead");
3132
}
3233

33-
} // namespace clang::tidy::cert
34+
} // namespace clang::tidy::modernize

clang-tools-extra/clang-tidy/cert/VariadicFunctionDefCheck.h renamed to clang-tools-extra/clang-tidy/modernize/AvoidVariadicFunctionsCheck.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_VARIADICFUNCTIONDEF_H
10-
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_VARIADICFUNCTIONDEF_H
9+
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDVARIADICFUNCTIONSCHECK_H
10+
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDVARIADICFUNCTIONSCHECK_H
1111

1212
#include "../ClangTidyCheck.h"
1313

14-
namespace clang::tidy::cert {
14+
namespace clang::tidy::modernize {
1515

16-
/// Guards against any C-style variadic function definitions (not declarations).
16+
/// Find all function definitions of C-style variadic functions.
1717
///
1818
/// For the user-facing documentation see:
19-
/// http://clang.llvm.org/extra/clang-tidy/checks/cert/dcl50-cpp.html
20-
class VariadicFunctionDefCheck : public ClangTidyCheck {
19+
/// http://clang.llvm.org/extra/clang-tidy/checks/modernize/avoid-variadic-functions.html
20+
class AvoidVariadicFunctionsCheck : public ClangTidyCheck {
2121
public:
22-
VariadicFunctionDefCheck(StringRef Name, ClangTidyContext *Context)
22+
AvoidVariadicFunctionsCheck(StringRef Name, ClangTidyContext *Context)
2323
: ClangTidyCheck(Name, Context) {}
2424
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
2525
return LangOpts.CPlusPlus;
@@ -28,6 +28,6 @@ class VariadicFunctionDefCheck : public ClangTidyCheck {
2828
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
2929
};
3030

31-
} // namespace clang::tidy::cert
31+
} // namespace clang::tidy::modernize
3232

33-
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_VARIADICFUNCTIONDEF_H
33+
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_AVOIDVARIADICFUNCTIONSCHECK_H

clang-tools-extra/clang-tidy/modernize/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ set(LLVM_LINK_COMPONENTS
66
add_clang_library(clangTidyModernizeModule STATIC
77
AvoidBindCheck.cpp
88
AvoidCArraysCheck.cpp
9+
AvoidVariadicFunctionsCheck.cpp
910
ConcatNestedNamespacesCheck.cpp
1011
DeprecatedHeadersCheck.cpp
1112
DeprecatedIosBaseAliasesCheck.cpp

clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "../ClangTidyModuleRegistry.h"
1212
#include "AvoidBindCheck.h"
1313
#include "AvoidCArraysCheck.h"
14+
#include "AvoidVariadicFunctionsCheck.h"
1415
#include "ConcatNestedNamespacesCheck.h"
1516
#include "DeprecatedHeadersCheck.h"
1617
#include "DeprecatedIosBaseAliasesCheck.h"
@@ -63,6 +64,8 @@ class ModernizeModule : public ClangTidyModule {
6364
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
6465
CheckFactories.registerCheck<AvoidBindCheck>("modernize-avoid-bind");
6566
CheckFactories.registerCheck<AvoidCArraysCheck>("modernize-avoid-c-arrays");
67+
CheckFactories.registerCheck<AvoidVariadicFunctionsCheck>(
68+
"modernize-avoid-variadic-functions");
6669
CheckFactories.registerCheck<ConcatNestedNamespacesCheck>(
6770
"modernize-concat-nested-namespaces");
6871
CheckFactories.registerCheck<DeprecatedHeadersCheck>(

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ New checks
206206
New check aliases
207207
^^^^^^^^^^^^^^^^^
208208

209+
- Renamed :doc:`cert-dcl50-cpp <clang-tidy/checks/cert/dcl50-cpp>` to
210+
:doc:`modernize-avoid-variadic-functions
211+
<clang-tidy/checks/modernize/avoid-variadic-functions>`
212+
keeping initial check as an alias to the new one.
213+
209214
- Renamed :doc:`cert-err34-c <clang-tidy/checks/cert/err34-c>` to
210215
:doc:`bugprone-unchecked-string-to-number-conversion
211216
<clang-tidy/checks/bugprone/unchecked-string-to-number-conversion>`

clang-tools-extra/docs/clang-tidy/checks/cert/dcl50-cpp.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
.. title:: clang-tidy - cert-dcl50-cpp
2+
.. meta::
3+
:http-equiv=refresh: 5;URL=../modernize/avoid-variadic-functions.html
24

35
cert-dcl50-cpp
46
==============
57

6-
This check flags all function definitions (but not declarations) of C-style
7-
variadic functions.
8+
The `cert-dcl50-cpp` check is an alias, please see
9+
`modernize-avoid-variadic-functions <../modernize/avoid-variadic-functions.html>`_
10+
for more information.
811

912
This check corresponds to the CERT C++ Coding Standard rule
1013
`DCL50-CPP. Do not define a C-style variadic function

clang-tools-extra/docs/clang-tidy/checks/list.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ Clang-Tidy Checks
172172
:doc:`bugprone-unused-return-value <bugprone/unused-return-value>`,
173173
:doc:`bugprone-use-after-move <bugprone/use-after-move>`,
174174
:doc:`bugprone-virtual-near-miss <bugprone/virtual-near-miss>`, "Yes"
175-
:doc:`cert-dcl50-cpp <cert/dcl50-cpp>`,
176175
:doc:`cert-dcl58-cpp <cert/dcl58-cpp>`,
177176
:doc:`cert-env33-c <cert/env33-c>`,
178177
:doc:`cert-err33-c <cert/err33-c>`,
@@ -288,6 +287,7 @@ Clang-Tidy Checks
288287
:doc:`misc-use-internal-linkage <misc/use-internal-linkage>`, "Yes"
289288
:doc:`modernize-avoid-bind <modernize/avoid-bind>`, "Yes"
290289
:doc:`modernize-avoid-c-arrays <modernize/avoid-c-arrays>`,
290+
:doc:`modernize-avoid-variadic-functions <modernize/avoid-variadic-functions>`,
291291
:doc:`modernize-concat-nested-namespaces <modernize/concat-nested-namespaces>`, "Yes"
292292
:doc:`modernize-deprecated-headers <modernize/deprecated-headers>`, "Yes"
293293
:doc:`modernize-deprecated-ios-base-aliases <modernize/deprecated-ios-base-aliases>`, "Yes"
@@ -435,6 +435,7 @@ Check aliases
435435
:doc:`cert-dcl03-c <cert/dcl03-c>`, :doc:`misc-static-assert <misc/static-assert>`, "Yes"
436436
:doc:`cert-dcl16-c <cert/dcl16-c>`, :doc:`readability-uppercase-literal-suffix <readability/uppercase-literal-suffix>`, "Yes"
437437
:doc:`cert-dcl37-c <cert/dcl37-c>`, :doc:`bugprone-reserved-identifier <bugprone/reserved-identifier>`, "Yes"
438+
:doc:`cert-dcl50-cpp <cert/dcl50-cpp>`, :doc:`modernize-avoid-variadic-functions <modernize/avoid-variadic-functions>`,
438439
:doc:`cert-dcl51-cpp <cert/dcl51-cpp>`, :doc:`bugprone-reserved-identifier <bugprone/reserved-identifier>`, "Yes"
439440
:doc:`cert-dcl54-cpp <cert/dcl54-cpp>`, :doc:`misc-new-delete-overloads <misc/new-delete-overloads>`,
440441
:doc:`cert-dcl59-cpp <cert/dcl59-cpp>`, :doc:`google-build-namespaces <google/build-namespaces>`,
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.. title:: clang-tidy - modernize-avoid-variadic-functions
2+
3+
modernize-avoid-variadic-functions
4+
==================================
5+
6+
Find all function definitions (but not declarations) of C-style variadic
7+
functions.
8+
9+
Instead of C-style variadic functions, C++ function parameter pack should be
10+
used.
11+
12+
13+
References
14+
----------
15+
16+
This check corresponds to the CERT C++ Coding Standard rule
17+
`DCL50-CPP. Do not define a C-style variadic function
18+
<https://www.securecoding.cert.org/confluence/display/cplusplus/DCL50-CPP.+Do+not+define+a+C-style+variadic+function>`_.

0 commit comments

Comments
 (0)