This is an automated email from the ASF dual-hosted git repository. masaori pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new 0b813fdfb9 Add ENABLE_CLANG_TIDY option (#11077) 0b813fdfb9 is described below commit 0b813fdfb90a0a0cceb3a7bfbe5861e8a339a80d Author: Masaori Koshiba <masa...@apache.org> AuthorDate: Mon Mar 18 08:06:53 2024 +0900 Add ENABLE_CLANG_TIDY option (#11077) * Add ENABLE_CLANG_TIDY option * Include from top CMakeLists.txt * Fix format * Trim semi-colon at the end --- CMakeLists.txt | 1 + cmake/ClangTidy.cmake | 59 +++++++++++++++++++++++++++++++++++ cmake/add_atsplugin.cmake | 1 + src/api/CMakeLists.txt | 2 ++ src/cripts/CMakeLists.txt | 2 ++ src/iocore/aio/CMakeLists.txt | 2 ++ src/iocore/cache/CMakeLists.txt | 2 ++ src/iocore/dns/CMakeLists.txt | 2 ++ src/iocore/eventsystem/CMakeLists.txt | 2 ++ src/iocore/hostdb/CMakeLists.txt | 2 ++ src/iocore/io_uring/CMakeLists.txt | 2 ++ src/iocore/net/CMakeLists.txt | 2 ++ src/iocore/utils/CMakeLists.txt | 2 ++ src/mgmt/config/CMakeLists.txt | 2 ++ src/mgmt/rpc/CMakeLists.txt | 2 ++ src/proxy/CMakeLists.txt | 2 ++ src/proxy/hdrs/CMakeLists.txt | 2 ++ src/proxy/http/CMakeLists.txt | 2 ++ src/proxy/http2/CMakeLists.txt | 2 ++ src/proxy/http3/CMakeLists.txt | 2 ++ src/proxy/logging/CMakeLists.txt | 2 ++ src/records/CMakeLists.txt | 2 ++ src/shared/CMakeLists.txt | 2 ++ src/traffic_cache_tool/CMakeLists.txt | 2 ++ src/traffic_crashlog/CMakeLists.txt | 2 ++ src/traffic_ctl/CMakeLists.txt | 2 ++ src/traffic_layout/CMakeLists.txt | 2 ++ src/traffic_logcat/CMakeLists.txt | 2 ++ src/traffic_logstats/CMakeLists.txt | 2 ++ src/traffic_server/CMakeLists.txt | 2 ++ src/traffic_top/CMakeLists.txt | 2 ++ src/traffic_via/CMakeLists.txt | 2 ++ src/tscore/CMakeLists.txt | 2 ++ src/tscpp/api/CMakeLists.txt | 2 ++ src/tsutil/CMakeLists.txt | 2 ++ 35 files changed, 125 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bc10df048..1b2509604f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE -DATS_BUILD) include(layout) +include(ClangTidy) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_definitions(DEBUG _DEBUG) diff --git a/cmake/ClangTidy.cmake b/cmake/ClangTidy.cmake new file mode 100644 index 0000000000..825f5d04f3 --- /dev/null +++ b/cmake/ClangTidy.cmake @@ -0,0 +1,59 @@ +####################### +# +# Licensed to the Apache Software Foundation (ASF) under one or more contributor license +# agreements. See the NOTICE file distributed with this work for additional information regarding +# copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. See the License for the specific language governing permissions and limitations under +# the License. +# +####################### + +# ClangTidy.cmake +# +# This adds a function to enable clang-tidy to the target. The .clang-tidy config file is refered in default. +# +# - e.g. +# ``` +# "cacheVariables": { +# "ENABLE_CLANG_TIDY": true, +# "CLANG_TIDY_PATH": "/opt/homebrew/opt/llvm/bin/" +# "CLANG_TIDY_OPTS": "--fix;--warnings-as-errors=*" +# } +# ``` + +if(ENABLE_CLANG_TIDY) + # Find clang-tidy program + find_program( + CLANG_TIDY_EXE + NAMES "clang-tidy" + HINTS ${CLANG_TIDY_PATH} + ) + + # Add options if there + # + # CAVEAT: the option should not end with semi-colon. You'll see below error. + # ``` + # error: unable to handle compilation, expected exactly one compiler job in '' [clang-diagnostic-error] + # ``` + if(NOT "${CLANG_TIDY_OPTS}" STREQUAL "") + string(REGEX REPLACE ";$" "$" CLANG_TIDY_OPTS_TRIMMED ${CLANG_TIDY_OPTS}) + string(APPEND CLANG_TIDY_EXE ";${CLANG_TIDY_OPTS_TRIMMED}") + endif() + + message(STATUS "Enable clang-tidy - ${CLANG_TIDY_EXE}") +endif() + +function(clang_tidy_check target) + if(NOT ENABLE_CLANG_TIDY) + return() + endif() + + set_target_properties(${target} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE}") +endfunction() diff --git a/cmake/add_atsplugin.cmake b/cmake/add_atsplugin.cmake index 80de5bb965..dae6a4c027 100644 --- a/cmake/add_atsplugin.cmake +++ b/cmake/add_atsplugin.cmake @@ -31,6 +31,7 @@ function(add_atsplugin name) set_target_properties(${name} PROPERTIES SUFFIX ".so") remove_definitions(-DATS_BUILD) # remove the ATS_BUILD define for plugins to build without issue install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}) + clang_tidy_check(${name}) endfunction() function(verify_remap_plugin target) diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index 7db56a345d..b9c9e9dffc 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -54,3 +54,5 @@ install( if(APPLE) target_link_options(tsapi PRIVATE -undefined dynamic_lookup) endif() + +clang_tidy_check(tsapi) diff --git a/src/cripts/CMakeLists.txt b/src/cripts/CMakeLists.txt index 52613f017b..31a673dfc8 100644 --- a/src/cripts/CMakeLists.txt +++ b/src/cripts/CMakeLists.txt @@ -79,3 +79,5 @@ add_custom_target( DEPENDS ${PROJECT_SOURCE_DIR}/src/shared/overridable_txn_vars.cc ${PROJECT_SOURCE_DIR}/tools/cripts/genconfig.py VERBATIM ) + +clang_tidy_check(cripts) diff --git a/src/iocore/aio/CMakeLists.txt b/src/iocore/aio/CMakeLists.txt index 4d7446cdda..0930cc8dee 100644 --- a/src/iocore/aio/CMakeLists.txt +++ b/src/iocore/aio/CMakeLists.txt @@ -34,3 +34,5 @@ if(BUILD_TESTING) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/iocore/aio ) endif() + +clang_tidy_check(aio) diff --git a/src/iocore/cache/CMakeLists.txt b/src/iocore/cache/CMakeLists.txt index 4d7f9498ad..3cc6c6ae94 100644 --- a/src/iocore/cache/CMakeLists.txt +++ b/src/iocore/cache/CMakeLists.txt @@ -87,3 +87,5 @@ if(BUILD_TESTING) add_cache_test(Update_Header unit_tests/test_Update_header.cc) endif() + +clang_tidy_check(inkcache) diff --git a/src/iocore/dns/CMakeLists.txt b/src/iocore/dns/CMakeLists.txt index 987cdb34ab..80ba814a3b 100644 --- a/src/iocore/dns/CMakeLists.txt +++ b/src/iocore/dns/CMakeLists.txt @@ -30,3 +30,5 @@ target_link_libraries( #ts::inknet cyclic dependency ts::proxy ts::tsutil ts::tscore ) + +clang_tidy_check(inkdns) diff --git a/src/iocore/eventsystem/CMakeLists.txt b/src/iocore/eventsystem/CMakeLists.txt index 5488e19278..656015c2f4 100644 --- a/src/iocore/eventsystem/CMakeLists.txt +++ b/src/iocore/eventsystem/CMakeLists.txt @@ -64,3 +64,5 @@ if(BUILD_TESTING) add_test(NAME test_MIOBufferWriter COMMAND test_MIOBufferWriter) endif() + +clang_tidy_check(inkevent) diff --git a/src/iocore/hostdb/CMakeLists.txt b/src/iocore/hostdb/CMakeLists.txt index d8999a78d6..40a0603111 100644 --- a/src/iocore/hostdb/CMakeLists.txt +++ b/src/iocore/hostdb/CMakeLists.txt @@ -19,3 +19,5 @@ add_library(inkhostdb STATIC HostDB.cc Inline.cc RefCountCache.cc HostFile.cc Ho add_library(ts::inkhostdb ALIAS inkhostdb) target_link_libraries(inkhostdb PUBLIC ts::inkdns ts::inkevent ts::tscore) + +clang_tidy_check(inkhostdb) diff --git a/src/iocore/io_uring/CMakeLists.txt b/src/iocore/io_uring/CMakeLists.txt index 4c5e586e21..6cec4d1e88 100644 --- a/src/iocore/io_uring/CMakeLists.txt +++ b/src/iocore/io_uring/CMakeLists.txt @@ -32,3 +32,5 @@ if(BUILD_TESTING) add_test(NAME test_iouring COMMAND $<TARGET_FILE:test_iouring>) endif() + +clang_tidy_check(inkuring) diff --git a/src/iocore/net/CMakeLists.txt b/src/iocore/net/CMakeLists.txt index 9f714b956b..2a11811c5e 100644 --- a/src/iocore/net/CMakeLists.txt +++ b/src/iocore/net/CMakeLists.txt @@ -125,3 +125,5 @@ if(BUILD_TESTING) target_compile_definitions(test_net PRIVATE LIBINKNET_UNIT_TEST_DIR=${LIBINKNET_UNIT_TEST_DIR}) add_test(NAME test_net COMMAND test_net) endif() + +clang_tidy_check(inknet) diff --git a/src/iocore/utils/CMakeLists.txt b/src/iocore/utils/CMakeLists.txt index 4d6e150123..d490a7bae1 100644 --- a/src/iocore/utils/CMakeLists.txt +++ b/src/iocore/utils/CMakeLists.txt @@ -19,3 +19,5 @@ add_library(inkutils STATIC Machine.cc OneWayMultiTunnel.cc OneWayTunnel.cc) add_library(ts::inkutils ALIAS inkutils) target_link_libraries(inkutils PUBLIC ts::inkevent ts::tscore) + +clang_tidy_check(inkutils) diff --git a/src/mgmt/config/CMakeLists.txt b/src/mgmt/config/CMakeLists.txt index 61d75132f7..e4e106ff92 100644 --- a/src/mgmt/config/CMakeLists.txt +++ b/src/mgmt/config/CMakeLists.txt @@ -23,3 +23,5 @@ target_link_libraries( PUBLIC ts::tscore PRIVATE ts::proxy ) + +clang_tidy_check(configmanager) diff --git a/src/mgmt/rpc/CMakeLists.txt b/src/mgmt/rpc/CMakeLists.txt index 36446217b7..1d91928697 100644 --- a/src/mgmt/rpc/CMakeLists.txt +++ b/src/mgmt/rpc/CMakeLists.txt @@ -69,3 +69,5 @@ if(BUILD_TESTING) target_link_libraries(test_jsonrpcserver catch2::catch2 ts::jsonrpc_server ts::inkevent libswoc::libswoc) add_test(NAME test_jsonrpcserver COMMAND test_jsonrpcserver) endif() + +clang_tidy_check(jsonrpc_protocol) diff --git a/src/proxy/CMakeLists.txt b/src/proxy/CMakeLists.txt index 6b25c6683d..dc2eec4b7c 100644 --- a/src/proxy/CMakeLists.txt +++ b/src/proxy/CMakeLists.txt @@ -59,3 +59,5 @@ add_subdirectory(logging) if(TS_USE_QUIC) add_subdirectory(http3) endif() + +clang_tidy_check(proxy) diff --git a/src/proxy/hdrs/CMakeLists.txt b/src/proxy/hdrs/CMakeLists.txt index dd8bad770c..9c3a2fb53f 100644 --- a/src/proxy/hdrs/CMakeLists.txt +++ b/src/proxy/hdrs/CMakeLists.txt @@ -58,3 +58,5 @@ if(BUILD_TESTING) target_link_libraries(test_proxy_hdrs_xpack PRIVATE ts::hdrs ts::tscore ts::tsutil libswoc catch2::catch2) add_test(NAME test_proxy_hdrs_xpack COMMAND test_proxy_hdrs_xpack) endif() + +clang_tidy_check(hdrs) diff --git a/src/proxy/http/CMakeLists.txt b/src/proxy/http/CMakeLists.txt index 63f9ff6439..ff133c251a 100644 --- a/src/proxy/http/CMakeLists.txt +++ b/src/proxy/http/CMakeLists.txt @@ -69,3 +69,5 @@ if(BUILD_TESTING) target_link_libraries(test_proxy_http PRIVATE catch2::catch2 hdrs tscore inkevent proxy logging) add_test(NAME test_proxy_http COMMAND test_proxy_http) endif(BUILD_TESTING) + +clang_tidy_check(http) diff --git a/src/proxy/http2/CMakeLists.txt b/src/proxy/http2/CMakeLists.txt index 066bd624eb..00b302444a 100644 --- a/src/proxy/http2/CMakeLists.txt +++ b/src/proxy/http2/CMakeLists.txt @@ -60,3 +60,5 @@ if(BUILD_TESTING) target_link_libraries(test_HPACK PRIVATE tscore hdrs inkevent) add_test(NAME test_HPACK COMMAND test_HPACK -i ${CMAKE_CURRENT_SOURCE_DIR}/hpack-tests -o ./results) endif() + +clang_tidy_check(http2) diff --git a/src/proxy/http3/CMakeLists.txt b/src/proxy/http3/CMakeLists.txt index 9089b72cad..bc24e63c8a 100644 --- a/src/proxy/http3/CMakeLists.txt +++ b/src/proxy/http3/CMakeLists.txt @@ -84,3 +84,5 @@ target_link_libraries( ts::tscore ) add_test(NAME test_qpack COMMAND test_qpack) + +clang_tidy_check(http3) diff --git a/src/proxy/logging/CMakeLists.txt b/src/proxy/logging/CMakeLists.txt index 62fe72f974..83d5c68502 100644 --- a/src/proxy/logging/CMakeLists.txt +++ b/src/proxy/logging/CMakeLists.txt @@ -49,3 +49,5 @@ if(BUILD_TESTING) target_link_libraries(test_RolledLogDeleter tscore records catch2::catch2) add_test(NAME test_RolledLogDeleter COMMAND test_RolledLogDeleter) endif() + +clang_tidy_check(logging) diff --git a/src/records/CMakeLists.txt b/src/records/CMakeLists.txt index a65d5a43f2..17ea54e79f 100644 --- a/src/records/CMakeLists.txt +++ b/src/records/CMakeLists.txt @@ -48,3 +48,5 @@ if(BUILD_TESTING) target_link_libraries(test_records_on_eventsystem PRIVATE records catch2::catch2 tscore libswoc::libswoc) add_test(NAME test_records_on_eventsystem COMMAND test_records_on_eventsystem) endif() + +clang_tidy_check(records) diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index 25fe4216ff..fa6d1d8326 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -19,3 +19,5 @@ add_library(overridable_txn_vars STATIC overridable_txn_vars.cc) add_library(ts::overridable_txn_vars ALIAS overridable_txn_vars) target_link_libraries(overridable_txn_vars PRIVATE ts::inknet) + +clang_tidy_check(overridable_txn_vars) diff --git a/src/traffic_cache_tool/CMakeLists.txt b/src/traffic_cache_tool/CMakeLists.txt index e7a4dcd186..458fae0cd2 100644 --- a/src/traffic_cache_tool/CMakeLists.txt +++ b/src/traffic_cache_tool/CMakeLists.txt @@ -19,3 +19,5 @@ add_executable(traffic_cache_tool CacheDefs.cc CacheTool.cc CacheScan.cc) target_link_libraries(traffic_cache_tool PRIVATE ts::tscore libswoc::libswoc ts::tsutil) install(TARGETS traffic_cache_tool) + +clang_tidy_check(traffic_cache_tool) diff --git a/src/traffic_crashlog/CMakeLists.txt b/src/traffic_crashlog/CMakeLists.txt index 9dcda20323..2ee1ac9a8c 100644 --- a/src/traffic_crashlog/CMakeLists.txt +++ b/src/traffic_crashlog/CMakeLists.txt @@ -24,3 +24,5 @@ if(TS_USE_REMOTE_UNWINDING) endif() install(TARGETS traffic_crashlog) + +clang_tidy_check(traffic_crashlog) diff --git a/src/traffic_ctl/CMakeLists.txt b/src/traffic_ctl/CMakeLists.txt index 86d647237e..6962f30d3a 100644 --- a/src/traffic_ctl/CMakeLists.txt +++ b/src/traffic_ctl/CMakeLists.txt @@ -23,3 +23,5 @@ add_executable( target_link_libraries(traffic_ctl ts::tscore libswoc::libswoc yaml-cpp::yaml-cpp ts::tsutil) install(TARGETS traffic_ctl) + +clang_tidy_check(traffic_ctl) diff --git a/src/traffic_layout/CMakeLists.txt b/src/traffic_layout/CMakeLists.txt index 551b0f9271..56766955c6 100644 --- a/src/traffic_layout/CMakeLists.txt +++ b/src/traffic_layout/CMakeLists.txt @@ -32,3 +32,5 @@ if(HAVE_BROTLI_ENCODE_H) endif() install(TARGETS traffic_layout) + +clang_tidy_check(traffic_layout) diff --git a/src/traffic_logcat/CMakeLists.txt b/src/traffic_logcat/CMakeLists.txt index 5c16aac904..17f835a9ca 100644 --- a/src/traffic_logcat/CMakeLists.txt +++ b/src/traffic_logcat/CMakeLists.txt @@ -18,3 +18,5 @@ add_executable(traffic_logcat logcat.cc) target_link_libraries(traffic_logcat PRIVATE ts::logging ts::tscore ts::diagsconfig ts::inkevent) install(TARGETS traffic_logcat) + +clang_tidy_check(traffic_logcat) diff --git a/src/traffic_logstats/CMakeLists.txt b/src/traffic_logstats/CMakeLists.txt index 8d62e07df1..f14d2b5381 100644 --- a/src/traffic_logstats/CMakeLists.txt +++ b/src/traffic_logstats/CMakeLists.txt @@ -33,3 +33,5 @@ if(BUILD_TESTING) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src ) endif() + +clang_tidy_check(traffic_logstats) diff --git a/src/traffic_server/CMakeLists.txt b/src/traffic_server/CMakeLists.txt index c381520c6f..8bd5b8f284 100644 --- a/src/traffic_server/CMakeLists.txt +++ b/src/traffic_server/CMakeLists.txt @@ -65,3 +65,5 @@ endif(TS_USE_LINUX_IO_URING) set_target_properties(traffic_server PROPERTIES ENABLE_EXPORTS ON) install(TARGETS traffic_server) + +clang_tidy_check(traffic_server) diff --git a/src/traffic_top/CMakeLists.txt b/src/traffic_top/CMakeLists.txt index 52d93f84d0..a15a922172 100644 --- a/src/traffic_top/CMakeLists.txt +++ b/src/traffic_top/CMakeLists.txt @@ -19,3 +19,5 @@ add_executable(traffic_top traffic_top.cc ${CMAKE_SOURCE_DIR}/src/shared/rpc/IPC target_include_directories(traffic_top PRIVATE ${CURSES_INCLUDE_DIRS}) target_link_libraries(traffic_top PRIVATE ts::tscore ts::inkevent libswoc::libswoc ${CURSES_LIBRARIES}) install(TARGETS traffic_top) + +clang_tidy_check(traffic_top) diff --git a/src/traffic_via/CMakeLists.txt b/src/traffic_via/CMakeLists.txt index dcc032e193..49ef1ff35b 100644 --- a/src/traffic_via/CMakeLists.txt +++ b/src/traffic_via/CMakeLists.txt @@ -19,6 +19,8 @@ add_executable(traffic_via traffic_via.cc) target_link_libraries(traffic_via ts::tscore libswoc::libswoc ts::tsutil) install(TARGETS traffic_via) +clang_tidy_check(traffic_via) + if(BUILD_TESTING) # Odd test to maintain compatibility with autotools. This could be better. add_test( diff --git a/src/tscore/CMakeLists.txt b/src/tscore/CMakeLists.txt index b7722e99a4..a7a2e417b1 100644 --- a/src/tscore/CMakeLists.txt +++ b/src/tscore/CMakeLists.txt @@ -187,3 +187,5 @@ if(BUILD_TESTING) add_test(NAME test_tscore COMMAND $<TARGET_FILE:test_tscore>) endif() + +clang_tidy_check(tscore) diff --git a/src/tscpp/api/CMakeLists.txt b/src/tscpp/api/CMakeLists.txt index 9a4668bd62..3e5c43775b 100644 --- a/src/tscpp/api/CMakeLists.txt +++ b/src/tscpp/api/CMakeLists.txt @@ -82,3 +82,5 @@ set(TSCPP_API_PUBLIC_HEADERS set_target_properties(tscppapi PROPERTIES PUBLIC_HEADER "${TSCPP_API_PUBLIC_HEADERS}") install(TARGETS tscppapi PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tscpp/api) + +clang_tidy_check(tscppapi) diff --git a/src/tsutil/CMakeLists.txt b/src/tsutil/CMakeLists.txt index beca3c8a25..48e3df46b1 100644 --- a/src/tsutil/CMakeLists.txt +++ b/src/tsutil/CMakeLists.txt @@ -85,3 +85,5 @@ if(BUILD_TESTING) add_test(NAME test_tsutil COMMAND $<TARGET_FILE:test_tsutil>) endif() + +clang_tidy_check(tsutil)