From f4a5bb6c80d8cb87886e47327d6114bdb4b33b53 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Sun, 19 Mar 2017 17:23:23 +0000 Subject: [PATCH] Rename the clang-tidy safety module to be hicpp, for the High-Integrity C++ coding standard from PRQA. This commit renames all of the safety functionality to be hicpp, adds an appropriate LICENSE.TXT, and updates the documentation accordingly. git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@298229 91177308-0d34-0410-b5e6-96231b3b80d8 --- LICENSE.TXT | 1 + clang-tidy/CMakeLists.txt | 8 ++++---- clang-tidy/{safety => hicpp}/CMakeLists.txt | 4 ++-- .../HICPPTidyModule.cpp} | 20 +++++++++---------- clang-tidy/hicpp/LICENSE.TXT | 12 +++++++++++ .../{safety => hicpp}/NoAssemblerCheck.cpp | 4 ++-- .../{safety => hicpp}/NoAssemblerCheck.h | 12 +++++------ clang-tidy/tool/CMakeLists.txt | 2 +- clang-tidy/tool/ClangTidyMain.cpp | 8 ++++---- docs/clang-tidy/checks/hicpp-no-assembler.rst | 10 ++++++++++ docs/clang-tidy/checks/list.rst | 2 +- .../clang-tidy/checks/safety-no-assembler.rst | 10 ---------- ...o-assembler.cpp => hicpp-no-assembler.cpp} | 9 ++++----- 13 files changed, 57 insertions(+), 45 deletions(-) rename clang-tidy/{safety => hicpp}/CMakeLists.txt (71%) rename clang-tidy/{safety/SafetyTidyModule.cpp => hicpp/HICPPTidyModule.cpp} (61%) create mode 100644 clang-tidy/hicpp/LICENSE.TXT rename clang-tidy/{safety => hicpp}/NoAssemblerCheck.cpp (97%) rename clang-tidy/{safety => hicpp}/NoAssemblerCheck.h (73%) create mode 100644 docs/clang-tidy/checks/hicpp-no-assembler.rst delete mode 100644 docs/clang-tidy/checks/safety-no-assembler.rst rename test/clang-tidy/{safety-no-assembler.cpp => hicpp-no-assembler.cpp} (56%) diff --git a/LICENSE.TXT b/LICENSE.TXT index 3f4fa1f12f4b..12fb67d053fd 100644 --- a/LICENSE.TXT +++ b/LICENSE.TXT @@ -60,3 +60,4 @@ licenses, and/or restrictions: Program Directory ------- --------- clang-tidy clang-tidy/cert +clang-tidy clang-tidy/hicpp diff --git a/clang-tidy/CMakeLists.txt b/clang-tidy/CMakeLists.txt index d08d56da4213..2de309d02ea3 100644 --- a/clang-tidy/CMakeLists.txt +++ b/clang-tidy/CMakeLists.txt @@ -26,17 +26,17 @@ add_clang_library(clangTidy clangToolingCore ) -add_subdirectory(tool) -add_subdirectory(plugin) add_subdirectory(boost) add_subdirectory(cert) -add_subdirectory(llvm) add_subdirectory(cppcoreguidelines) add_subdirectory(google) +add_subdirectory(hicpp) +add_subdirectory(llvm) add_subdirectory(misc) add_subdirectory(modernize) add_subdirectory(mpi) add_subdirectory(performance) +add_subdirectory(plugin) add_subdirectory(readability) -add_subdirectory(safety) +add_subdirectory(tool) add_subdirectory(utils) diff --git a/clang-tidy/safety/CMakeLists.txt b/clang-tidy/hicpp/CMakeLists.txt similarity index 71% rename from clang-tidy/safety/CMakeLists.txt rename to clang-tidy/hicpp/CMakeLists.txt index 467e704e1562..38c383f4c4b6 100644 --- a/clang-tidy/safety/CMakeLists.txt +++ b/clang-tidy/hicpp/CMakeLists.txt @@ -1,8 +1,8 @@ set(LLVM_LINK_COMPONENTS support) -add_clang_library(clangTidySafetyModule +add_clang_library(clangTidyHICPPModule NoAssemblerCheck.cpp - SafetyTidyModule.cpp + HICPPTidyModule.cpp LINK_LIBS clangAST diff --git a/clang-tidy/safety/SafetyTidyModule.cpp b/clang-tidy/hicpp/HICPPTidyModule.cpp similarity index 61% rename from clang-tidy/safety/SafetyTidyModule.cpp rename to clang-tidy/hicpp/HICPPTidyModule.cpp index a562e88b7c31..26b21cf3d316 100644 --- a/clang-tidy/safety/SafetyTidyModule.cpp +++ b/clang-tidy/hicpp/HICPPTidyModule.cpp @@ -1,4 +1,4 @@ -//===------- SafetyTidyModule.cpp - clang-tidy ----------------------------===// +//===------- HICPPTidyModule.cpp - clang-tidy -----------------------------===// // // The LLVM Compiler Infrastructure // @@ -14,25 +14,25 @@ namespace clang { namespace tidy { -namespace safety { +namespace hicpp { -class SafetyModule : public ClangTidyModule { +class HICPPModule : public ClangTidyModule { public: void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { CheckFactories.registerCheck( - "safety-no-assembler"); + "hicpp-no-assembler"); } }; -// Register the SafetyModule using this statically initialized variable. -static ClangTidyModuleRegistry::Add - X("safety-module", "Adds safety-critical checks."); +// Register the HICPPModule using this statically initialized variable. +static ClangTidyModuleRegistry::Add + X("hicpp-module", "Adds High-Integrity C++ checks."); -} // namespace safety +} // namespace hicpp // This anchor is used to force the linker to link in the generated object file -// and thus register the SafetyModule. -volatile int SafetyModuleAnchorSource = 0; +// and thus register the HICPPModule. +volatile int HICPPModuleAnchorSource = 0; } // namespace tidy } // namespace clang diff --git a/clang-tidy/hicpp/LICENSE.TXT b/clang-tidy/hicpp/LICENSE.TXT new file mode 100644 index 000000000000..fb8f513e51b9 --- /dev/null +++ b/clang-tidy/hicpp/LICENSE.TXT @@ -0,0 +1,12 @@ +------------------------------------------------------------------------------ +clang-tidy High-Integrity C++ Files +------------------------------------------------------------------------------ +All clang-tidy files are licensed under the LLVM license with the following +additions: + +Any file referencing a High-Integrity C++ Coding guideline: + +HIC++ Coding Standard as created by PRQA. + +Please see http://www.codingstandard.com/section/conditions-of-use/ for more +information. diff --git a/clang-tidy/safety/NoAssemblerCheck.cpp b/clang-tidy/hicpp/NoAssemblerCheck.cpp similarity index 97% rename from clang-tidy/safety/NoAssemblerCheck.cpp rename to clang-tidy/hicpp/NoAssemblerCheck.cpp index 880feb7cad51..053db61322ef 100644 --- a/clang-tidy/safety/NoAssemblerCheck.cpp +++ b/clang-tidy/hicpp/NoAssemblerCheck.cpp @@ -23,7 +23,7 @@ const internal::VariadicDynCastAllOfMatcher namespace clang { namespace tidy { -namespace safety { +namespace hicpp { void NoAssemblerCheck::registerMatchers(MatchFinder *Finder) { Finder->addMatcher(asmStmt().bind("asm-stmt"), this); @@ -46,6 +46,6 @@ void NoAssemblerCheck::check(const MatchFinder::MatchResult &Result) { diag(ASMLocation, "do not use inline assembler in safety-critical code"); } -} // namespace safety +} // namespace hicpp } // namespace tidy } // namespace clang diff --git a/clang-tidy/safety/NoAssemblerCheck.h b/clang-tidy/hicpp/NoAssemblerCheck.h similarity index 73% rename from clang-tidy/safety/NoAssemblerCheck.h rename to clang-tidy/hicpp/NoAssemblerCheck.h index 45679ad67421..416ccb06d809 100644 --- a/clang-tidy/safety/NoAssemblerCheck.h +++ b/clang-tidy/hicpp/NoAssemblerCheck.h @@ -7,19 +7,19 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_SAFETY_NO_ASSEMBLER_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_SAFETY_NO_ASSEMBLER_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_HICPP_NO_ASSEMBLER_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_HICPP_NO_ASSEMBLER_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace safety { +namespace hicpp { /// Find assembler statements. No fix is offered. /// /// For the user-facing documentation see: -/// http://clang.llvm.org/extra/clang-tidy/checks/safety-no-assembler.html +/// http://clang.llvm.org/extra/clang-tidy/checks/hicpp-no-assembler.html class NoAssemblerCheck : public ClangTidyCheck { public: NoAssemblerCheck(StringRef Name, ClangTidyContext *Context) @@ -28,8 +28,8 @@ class NoAssemblerCheck : public ClangTidyCheck { void check(const ast_matchers::MatchFinder::MatchResult &Result) override; }; -} // namespace safety +} // namespace hicpp } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_SAFETY_NO_ASSEMBLER_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_HICPP_NO_ASSEMBLER_H diff --git a/clang-tidy/tool/CMakeLists.txt b/clang-tidy/tool/CMakeLists.txt index 772221170308..01e2f7403a25 100644 --- a/clang-tidy/tool/CMakeLists.txt +++ b/clang-tidy/tool/CMakeLists.txt @@ -17,13 +17,13 @@ target_link_libraries(clang-tidy clangTidyCERTModule clangTidyCppCoreGuidelinesModule clangTidyGoogleModule + clangTidyHICPPModule clangTidyLLVMModule clangTidyMiscModule clangTidyModernizeModule clangTidyMPIModule clangTidyPerformanceModule clangTidyReadabilityModule - clangTidySafetyModule clangTooling ) diff --git a/clang-tidy/tool/ClangTidyMain.cpp b/clang-tidy/tool/ClangTidyMain.cpp index 4dc86e1aa394..95275f619db0 100644 --- a/clang-tidy/tool/ClangTidyMain.cpp +++ b/clang-tidy/tool/ClangTidyMain.cpp @@ -496,10 +496,10 @@ extern volatile int ReadabilityModuleAnchorSource; static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination = ReadabilityModuleAnchorSource; -// This anchor is used to force the linker to link the SafetyModule. -extern volatile int SafetyModuleAnchorSource; -static int LLVM_ATTRIBUTE_UNUSED SafetyModuleAnchorDestination = - SafetyModuleAnchorSource; +// This anchor is used to force the linker to link the HICPPModule. +extern volatile int HICPPModuleAnchorSource; +static int LLVM_ATTRIBUTE_UNUSED HICPPModuleAnchorDestination = + HICPPModuleAnchorSource; } // namespace tidy } // namespace clang diff --git a/docs/clang-tidy/checks/hicpp-no-assembler.rst b/docs/clang-tidy/checks/hicpp-no-assembler.rst new file mode 100644 index 000000000000..8295895ec888 --- /dev/null +++ b/docs/clang-tidy/checks/hicpp-no-assembler.rst @@ -0,0 +1,10 @@ +.. title:: clang-tidy - hicpp-no-assembler + +hicpp-no-assembler +=================== + +Check for assembler statements. No fix is offered. + +Inline assembler is forbidden by the `High Intergrity C++ Coding Standard +`_ +as it restricts the portability of code. diff --git a/docs/clang-tidy/checks/list.rst b/docs/clang-tidy/checks/list.rst index 216e0b70c8df..4479109aa6a9 100644 --- a/docs/clang-tidy/checks/list.rst +++ b/docs/clang-tidy/checks/list.rst @@ -53,6 +53,7 @@ Clang-Tidy Checks google-runtime-memset google-runtime-operator google-runtime-references + hicpp-no-assembler llvm-header-guard llvm-include-order llvm-namespace-comment @@ -155,4 +156,3 @@ Clang-Tidy Checks readability-simplify-boolean-expr readability-static-definition-in-anonymous-namespace readability-uniqueptr-delete-release - safety-no-assembler diff --git a/docs/clang-tidy/checks/safety-no-assembler.rst b/docs/clang-tidy/checks/safety-no-assembler.rst deleted file mode 100644 index 78189dc91a89..000000000000 --- a/docs/clang-tidy/checks/safety-no-assembler.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. title:: clang-tidy - safety-no-assembler - -safety-no-assembler -=================== - -Check for assembler statements. No fix is offered. - -Inline assembler is forbidden by safety-critical C++ standards like `High -Intergrity C++ `_ as it restricts the -portability of code. diff --git a/test/clang-tidy/safety-no-assembler.cpp b/test/clang-tidy/hicpp-no-assembler.cpp similarity index 56% rename from test/clang-tidy/safety-no-assembler.cpp rename to test/clang-tidy/hicpp-no-assembler.cpp index 04d1103bf647..d08ea74f6cde 100644 --- a/test/clang-tidy/safety-no-assembler.cpp +++ b/test/clang-tidy/hicpp-no-assembler.cpp @@ -1,13 +1,12 @@ -// RUN: %check_clang_tidy %s safety-no-assembler %t +// RUN: %check_clang_tidy %s hicpp-no-assembler %t __asm__(".symver foo, bar@v"); -// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: do not use inline assembler in safety-critical code [safety-no-assembler] +// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler] static int s asm("spam"); -// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: do not use inline assembler in safety-critical code [safety-no-assembler] +// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler] void f() { __asm("mov al, 2"); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use inline assembler in safety-critical code [safety-no-assembler] + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use inline assembler in safety-critical code [hicpp-no-assembler] } -