Author: aaronballman Date: Fri Oct 2 08:27:19 2015 New Revision: 249130 URL: http://llvm.org/viewvc/llvm-project?rev=249130&view=rev Log: Adding a new clang-tidy module to house CERT-specific checkers, and map existing checkers to CERT secure coding rules and recommendations for both C (https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard) and C++ (https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=637).
Added: clang-tools-extra/trunk/clang-tidy/cert/ clang-tools-extra/trunk/clang-tidy/cert/CERTTidyModule.cpp clang-tools-extra/trunk/clang-tidy/cert/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/cert/Makefile Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/Makefile clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/trunk/clang-tidy/tool/Makefile Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/CMakeLists.txt?rev=249130&r1=249129&r2=249130&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/CMakeLists.txt Fri Oct 2 08:27:19 2015 @@ -26,6 +26,7 @@ add_clang_library(clangTidy ) add_subdirectory(tool) +add_subdirectory(cert) add_subdirectory(llvm) add_subdirectory(google) add_subdirectory(misc) Modified: clang-tools-extra/trunk/clang-tidy/Makefile URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/Makefile?rev=249130&r1=249129&r2=249130&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/Makefile (original) +++ clang-tools-extra/trunk/clang-tidy/Makefile Fri Oct 2 08:27:19 2015 @@ -11,6 +11,6 @@ CLANG_LEVEL := ../../.. LIBRARYNAME := clangTidy include $(CLANG_LEVEL)/../../Makefile.config -DIRS = utils readability llvm google misc modernize tool +DIRS = utils cert readability llvm google misc modernize tool include $(CLANG_LEVEL)/Makefile Added: clang-tools-extra/trunk/clang-tidy/cert/CERTTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cert/CERTTidyModule.cpp?rev=249130&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/cert/CERTTidyModule.cpp (added) +++ clang-tools-extra/trunk/clang-tidy/cert/CERTTidyModule.cpp Fri Oct 2 08:27:19 2015 @@ -0,0 +1,59 @@ +//===--- CERTTidyModule.cpp - clang-tidy ----------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "../ClangTidy.h" +#include "../ClangTidyModule.h" +#include "../ClangTidyModuleRegistry.h" +#include "../google/UnnamedNamespaceInHeaderCheck.h" +#include "../misc/MoveConstructorInitCheck.h" +#include "../misc/NewDeleteOverloadsCheck.h" +#include "../misc/NonCopyableObjects.h" +#include "../misc/StaticAssertCheck.h" + +namespace clang { +namespace tidy { +namespace CERT { + +class CERTModule : public ClangTidyModule { +public: + void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { + // C++ checkers + // DCL + CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>( + "cert-dcl54-cpp"); + CheckFactories.registerCheck<google::build::UnnamedNamespaceInHeaderCheck>( + "cert-dcl59-cpp"); + // OOP + CheckFactories.registerCheck<MoveConstructorInitCheck>( + "cert-oop11-cpp"); + + // C checkers + // DCL + CheckFactories.registerCheck<StaticAssertCheck>( + "cert-dcl03-c"); + + // FIO + CheckFactories.registerCheck<NonCopyableObjectsCheck>( + "cert-fio38-c"); + } +}; + +} // namespace misc + +// Register the MiscTidyModule using this statically initialized variable. +static ClangTidyModuleRegistry::Add<CERT::CERTModule> +X("cert-module", + "Adds lint checks corresponding to CERT secure coding guidelines."); + +// This anchor is used to force the linker to link in the generated object file +// and thus register the CERTModule. +volatile int CERTModuleAnchorSource = 0; + +} // namespace tidy +} // namespace clang Added: clang-tools-extra/trunk/clang-tidy/cert/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cert/CMakeLists.txt?rev=249130&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/cert/CMakeLists.txt (added) +++ clang-tools-extra/trunk/clang-tidy/cert/CMakeLists.txt Fri Oct 2 08:27:19 2015 @@ -0,0 +1,12 @@ +set(LLVM_LINK_COMPONENTS support) + +add_clang_library(clangTidyCERTModule + CERTTidyModule.cpp + + LINK_LIBS + clangAST + clangASTMatchers + clangBasic + clangLex + clangTidy + ) Added: clang-tools-extra/trunk/clang-tidy/cert/Makefile URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cert/Makefile?rev=249130&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/cert/Makefile (added) +++ clang-tools-extra/trunk/clang-tidy/cert/Makefile Fri Oct 2 08:27:19 2015 @@ -0,0 +1,12 @@ +##===- clang-tidy/misc/Makefile ----------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## +CLANG_LEVEL := ../../../.. +LIBRARYNAME := clangTidyCERTModule + +include $(CLANG_LEVEL)/Makefile Modified: clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt?rev=249130&r1=249129&r2=249130&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/tool/CMakeLists.txt Fri Oct 2 08:27:19 2015 @@ -10,6 +10,7 @@ target_link_libraries(clang-tidy clangASTMatchers clangBasic clangTidy + clangTidyCERTModule clangTidyGoogleModule clangTidyLLVMModule clangTidyMiscModule Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=249130&r1=249129&r2=249130&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Fri Oct 2 08:27:19 2015 @@ -347,6 +347,11 @@ static int clangTidyMain(int argc, const return 0; } +// This anchor is used to force the linker to link the CERTModule. +extern volatile int CERTModuleAnchorSource; +static int LLVM_ATTRIBUTE_UNUSED CERTModuleAnchorDestination = + CERTModuleAnchorSource; + // This anchor is used to force the linker to link the LLVMModule. extern volatile int LLVMModuleAnchorSource; static int LLVM_ATTRIBUTE_UNUSED LLVMModuleAnchorDestination = Modified: clang-tools-extra/trunk/clang-tidy/tool/Makefile URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/Makefile?rev=249130&r1=249129&r2=249130&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/Makefile (original) +++ clang-tools-extra/trunk/clang-tidy/tool/Makefile Fri Oct 2 08:27:19 2015 @@ -16,8 +16,9 @@ TOOL_NO_EXPORTS = 1 include $(CLANG_LEVEL)/../../Makefile.config LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option -USEDLIBS = clangTidy.a clangTidyLLVMModule.a clangTidyGoogleModule.a \ - clangTidyMiscModule.a clangTidyModernizeModule.a clangTidyReadability.a \ +USEDLIBS = clangTidy.a clangTidyCERTModule.a clangTidyLLVMModule.a \ + clangTidyGoogleModule.a \ clangTidyMiscModule.a \ + clangTidyModernizeModule.a clangTidyReadability.a \ clangTidyUtils.a clangStaticAnalyzerFrontend.a \ clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \ clangFormat.a clangASTMatchers.a clangTooling.a clangToolingCore.a \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits