cmake: Add support for running clang-tidy

Adds supports for running clang-tidy from within CMake, if the Clang toolset was found. This feature is experimental, but should work on many compilers, as it relies on generated compile_commands.json which are fully generated by the clang subproject. Using clang-tidy we can find hidden bugs that other static analyzers do not detect, or compilers don't even bother throwing an error for.
This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2020-04-18 16:23:08 +02:00 committed by Michael Fabian Dirks
parent 04ac0a640f
commit 92fc2b3ccb
3 changed files with 45 additions and 2 deletions

35
.clang-tidy Normal file
View File

@ -0,0 +1,35 @@
Checks: '-*,clang-diagnostic-*,clang-analyzer-*,cppcoreguidelines-*,portability-*,readability-*,performance-*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle: none
User: Xaymar
CheckOptions:
- key: cert-dcl16-c.NewSuffixes
value: 'L;LL;LU;LLU'
- key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
value: '0'
- key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors
value: '1'
- key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: '1'
- key: google-readability-braces-around-statements.ShortStatementLines
value: '1'
- key: google-readability-function-size.StatementThreshold
value: '800'
- key: google-readability-namespace-comments.ShortNamespaceLines
value: '10'
- key: google-readability-namespace-comments.SpacesBeforeComments
value: '2'
- key: modernize-loop-convert.MaxCopySize
value: '16'
- key: modernize-loop-convert.MinConfidence
value: reasonable
- key: modernize-loop-convert.NamingStyle
value: CamelCase
- key: modernize-pass-by-value.IncludeStyle
value: llvm
- key: modernize-replace-auto-ptr.IncludeStyle
value: llvm
- key: modernize-use-nullptr.NullMacros
value: 'NULL'

View File

@ -909,6 +909,7 @@ set_target_properties(
${PROJECT_NAME}
PROPERTIES
CXX_STANDARD ${_CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ${_CXX_EXTENSIONS}
)
@ -947,8 +948,15 @@ if(HAVE_OBS_FRONTEND)
)
endif()
# Clang-Format
# Clang Tools
if(HAVE_CLANG)
generate_compile_commands_json(
TARGETS ${PROJECT_NAME}
)
clang_tidy(
TARGETS ${PROJECT_NAME}
VERSION 9.0.0
)
clang_format(
TARGETS ${PROJECT_NAME}
DEPENDENCY

@ -1 +1 @@
Subproject commit 9166c8a575a2a6bf4c029cfefc84d4bbe62befc5
Subproject commit 58da85a255b468ad170603e9528d63cf0d73bd27