carlosgalvezp created this revision.
carlosgalvezp added reviewers: aaron.ballman, whisperity.
carlosgalvezp added a project: clang-tools-extra.
Herald added subscribers: armkevincheng, jsmolens, eric-k256, arphaman,
rnkovacs, kbarton, xazax.hun, mgorny, nemanjai.
Herald added a reviewer: sjarus.
carlosgalvezp requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added subscribers: cfe-commits, sstefan1.
To allow checking the AUTOSAR C++14 Coding Guidelines.
Also an easy check, alias of the C++ Core Guidelines one.
Test and documentation included.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D112730
Files:
clang-tools-extra/clang-tidy/CMakeLists.txt
clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
clang-tools-extra/clang-tidy/autosar/AutosarTidyModule.cpp
clang-tools-extra/clang-tidy/autosar/CMakeLists.txt
clang-tools-extra/docs/clang-tidy/checks/autosar-a5-4-2-reinterpret-cast.rst
clang-tools-extra/docs/clang-tidy/checks/list.rst
clang-tools-extra/docs/clang-tidy/index.rst
clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-pro-type-reinterpret-cast.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-pro-type-reinterpret-cast.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-pro-type-reinterpret-cast.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-pro-type-reinterpret-cast.cpp
@@ -1,6 +1,6 @@
-// RUN: %check_clang_tidy %s cppcoreguidelines-pro-type-reinterpret-cast %t
+// RUN: %check_clang_tidy %s cppcoreguidelines-pro-type-reinterpret-cast,autosar-a5-2-4-reinterpret-cast %t
int i = 0;
void *j;
void f() { j = reinterpret_cast<void *>(i); }
-// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: do not use reinterpret_cast [cppcoreguidelines-pro-type-reinterpret-cast]
+// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: do not use reinterpret_cast [autosar-a5-2-4-reinterpret-cast,cppcoreguidelines-pro-type-reinterpret-cast]
Index: clang-tools-extra/docs/clang-tidy/index.rst
===================================================================
--- clang-tools-extra/docs/clang-tidy/index.rst
+++ clang-tools-extra/docs/clang-tidy/index.rst
@@ -60,6 +60,7 @@
``abseil-`` Checks related to Abseil library.
``altera-`` Checks related to OpenCL programming for FPGAs.
``android-`` Checks related to Android.
+``autosar-`` Checks related to AUTOSAR C++14 Coding Guidelines.
``boost-`` Checks related to Boost library.
``bugprone-`` Checks that target bugprone code constructs.
``cert-`` Checks related to CERT Secure Coding Guidelines.
Index: clang-tools-extra/docs/clang-tidy/checks/list.rst
===================================================================
--- clang-tools-extra/docs/clang-tidy/checks/list.rst
+++ clang-tools-extra/docs/clang-tidy/checks/list.rst
@@ -35,6 +35,7 @@
`altera-single-work-item-barrier <altera-single-work-item-barrier.html>`_,
`altera-struct-pack-align <altera-struct-pack-align.html>`_, "Yes"
`altera-unroll-loops <altera-unroll-loops.html>`_,
+ `autosar-a5-4-2-reinterpret-cast <autosar-a5-4-2-reinterpret-cast.html>`_,
`android-cloexec-accept <android-cloexec-accept.html>`_, "Yes"
`android-cloexec-accept4 <android-cloexec-accept4.html>`_,
`android-cloexec-creat <android-cloexec-creat.html>`_, "Yes"
@@ -328,6 +329,7 @@
.. csv-table:: Aliases..
:header: "Name", "Redirect", "Offers fixes"
+ `autosar-a5-4-2-reinterpret-cast <autosar-a5-4-2-reinterpret-cast.html>`_, `cppcoreguidelines-pro-type-reinterpret-cast <cppcoreguidelines-pro-type-reinterpret-cast>`_,
`cert-con36-c <cert-con36-c.html>`_, `bugprone-spuriously-wake-up-functions <bugprone-spuriously-wake-up-functions.html>`_,
`cert-con54-cpp <cert-con54-cpp.html>`_, `bugprone-spuriously-wake-up-functions <bugprone-spuriously-wake-up-functions.html>`_,
`cert-dcl03-c <cert-dcl03-c.html>`_, `misc-static-assert <misc-static-assert.html>`_, "Yes"
Index: clang-tools-extra/docs/clang-tidy/checks/autosar-a5-4-2-reinterpret-cast.rst
===================================================================
--- /dev/null
+++ clang-tools-extra/docs/clang-tidy/checks/autosar-a5-4-2-reinterpret-cast.rst
@@ -0,0 +1,10 @@
+.. title:: clang-tidy - autosar-a5-4-2-reinterpret-cast
+.. meta::
+ :http-equiv=refresh: 5;URL=cppcoreguidelines-pro-type-reinterpret-cast.html
+
+autosar-a5-4-2-reinterpret-cast
+===============================
+
+The autosar-a5-4-2-reinterpret-cast check is an alias, please see
+`cppcoreguidelines-pro-type-reinterpret-cast <cppcoreguidelines-pro-type-reinterpret-cast.html>`_
+for more information.
Index: clang-tools-extra/clang-tidy/autosar/CMakeLists.txt
===================================================================
--- /dev/null
+++ clang-tools-extra/clang-tidy/autosar/CMakeLists.txt
@@ -0,0 +1,27 @@
+set(LLVM_LINK_COMPONENTS
+ FrontendOpenMP
+ Support
+ )
+
+add_clang_library(clangTidyAutosarModule
+ AutosarTidyModule.cpp
+
+ LINK_LIBS
+ clangTidy
+ clangTidyUtils
+ clangTidyCppCoreGuidelinesModule
+
+ DEPENDS
+ omp_gen
+ )
+
+clang_target_link_libraries(clangTidyAutosarModule
+ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+ clangTooling
+ clangStaticAnalyzerCheckers
+ )
Index: clang-tools-extra/clang-tidy/autosar/AutosarTidyModule.cpp
===================================================================
--- /dev/null
+++ clang-tools-extra/clang-tidy/autosar/AutosarTidyModule.cpp
@@ -0,0 +1,38 @@
+//===--- AutosarTidyModule.cpp - clang-tidy -------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "../ClangTidy.h"
+#include "../ClangTidyModule.h"
+#include "../ClangTidyModuleRegistry.h"
+#include "../cppcoreguidelines/ProTypeReinterpretCastCheck.h"
+
+namespace clang {
+namespace tidy {
+namespace autosar {
+
+class AutosarModule : public ClangTidyModule {
+public:
+ void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
+ CheckFactories
+ .registerCheck<cppcoreguidelines::ProTypeReinterpretCastCheck>(
+ "autosar-a5-2-4-reinterpret-cast");
+ }
+};
+
+} // namespace autosar
+
+// Register the AutosarTidyModule using this statically initialized variable.
+static ClangTidyModuleRegistry::Add<autosar::AutosarModule>
+ X("autosar-module", "Adds AUTOSAR clang-tidy checks.");
+
+// This anchor is used to force the linker to link in the generated object file
+// and thus register the AutosarModule.
+volatile int AutosarModuleAnchorSource = 0;
+
+} // namespace tidy
+} // namespace clang
Index: clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
===================================================================
--- clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
+++ clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
@@ -30,6 +30,11 @@
static int LLVM_ATTRIBUTE_UNUSED AndroidModuleAnchorDestination =
AndroidModuleAnchorSource;
+// This anchor is used to force the linker to link the AutosarModule.
+extern volatile int AutosarModuleAnchorSource;
+static int LLVM_ATTRIBUTE_UNUSED AutosarModuleAnchorDestination =
+ AutosarModuleAnchorSource;
+
// This anchor is used to force the linker to link the BoostModule.
extern volatile int BoostModuleAnchorSource;
static int LLVM_ATTRIBUTE_UNUSED BoostModuleAnchorDestination =
Index: clang-tools-extra/clang-tidy/CMakeLists.txt
===================================================================
--- clang-tools-extra/clang-tidy/CMakeLists.txt
+++ clang-tools-extra/clang-tidy/CMakeLists.txt
@@ -49,9 +49,10 @@
# Checks.
# If you add a check, also add it to ClangTidyForceLinker.h in this directory.
-add_subdirectory(android)
add_subdirectory(abseil)
add_subdirectory(altera)
+add_subdirectory(android)
+add_subdirectory(autosar)
add_subdirectory(boost)
add_subdirectory(bugprone)
add_subdirectory(cert)
@@ -76,9 +77,10 @@
add_subdirectory(readability)
add_subdirectory(zircon)
set(ALL_CLANG_TIDY_CHECKS
- clangTidyAndroidModule
clangTidyAbseilModule
clangTidyAlteraModule
+ clangTidyAndroidModule
+ clangTidyAutosarModule
clangTidyBoostModule
clangTidyBugproneModule
clangTidyCERTModule
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits