mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-25 23:06:10 +01:00
Add new config option: STATIC_ANALYSIS_SUPPORT
This commit is contained in:
parent
f60c15364b
commit
dba9197ec7
@ -43,12 +43,14 @@ expand_template(
|
|||||||
"#cmakedefine CATCH_CONFIG_NO_GLOBAL_NEXTAFTER": "",
|
"#cmakedefine CATCH_CONFIG_NO_GLOBAL_NEXTAFTER": "",
|
||||||
"#cmakedefine CATCH_CONFIG_NO_POSIX_SIGNALS": "",
|
"#cmakedefine CATCH_CONFIG_NO_POSIX_SIGNALS": "",
|
||||||
"#cmakedefine CATCH_CONFIG_NO_USE_ASYNC": "",
|
"#cmakedefine CATCH_CONFIG_NO_USE_ASYNC": "",
|
||||||
|
"#cmakedefine CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT": "",
|
||||||
"#cmakedefine CATCH_CONFIG_NO_WCHAR": "",
|
"#cmakedefine CATCH_CONFIG_NO_WCHAR": "",
|
||||||
"#cmakedefine CATCH_CONFIG_NO_WINDOWS_SEH": "",
|
"#cmakedefine CATCH_CONFIG_NO_WINDOWS_SEH": "",
|
||||||
"#cmakedefine CATCH_CONFIG_NOSTDOUT": "",
|
"#cmakedefine CATCH_CONFIG_NOSTDOUT": "",
|
||||||
"#cmakedefine CATCH_CONFIG_POSIX_SIGNALS": "",
|
"#cmakedefine CATCH_CONFIG_POSIX_SIGNALS": "",
|
||||||
"#cmakedefine CATCH_CONFIG_PREFIX_ALL": "",
|
"#cmakedefine CATCH_CONFIG_PREFIX_ALL": "",
|
||||||
"#cmakedefine CATCH_CONFIG_SHARED_LIBRARY": "",
|
"#cmakedefine CATCH_CONFIG_SHARED_LIBRARY": "",
|
||||||
|
"#cmakedefine CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT": "",
|
||||||
"#cmakedefine CATCH_CONFIG_USE_ASYNC": "",
|
"#cmakedefine CATCH_CONFIG_USE_ASYNC": "",
|
||||||
"#cmakedefine CATCH_CONFIG_WCHAR": "",
|
"#cmakedefine CATCH_CONFIG_WCHAR": "",
|
||||||
"#cmakedefine CATCH_CONFIG_WINDOWS_CRTDBG": "",
|
"#cmakedefine CATCH_CONFIG_WINDOWS_CRTDBG": "",
|
||||||
|
@ -41,6 +41,7 @@ set(_OverridableOptions
|
|||||||
"WCHAR"
|
"WCHAR"
|
||||||
"WINDOWS_SEH"
|
"WINDOWS_SEH"
|
||||||
"GETENV"
|
"GETENV"
|
||||||
|
"EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT"
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach(OptionName ${_OverridableOptions})
|
foreach(OptionName ${_OverridableOptions})
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
[Enabling stringification](#enabling-stringification)<br>
|
[Enabling stringification](#enabling-stringification)<br>
|
||||||
[Disabling exceptions](#disabling-exceptions)<br>
|
[Disabling exceptions](#disabling-exceptions)<br>
|
||||||
[Overriding Catch's debug break (`-b`)](#overriding-catchs-debug-break--b)<br>
|
[Overriding Catch's debug break (`-b`)](#overriding-catchs-debug-break--b)<br>
|
||||||
|
[Static analysis support](#static-analysis-support)<br>
|
||||||
|
|
||||||
Catch2 is designed to "just work" as much as possible, and most of the
|
Catch2 is designed to "just work" as much as possible, and most of the
|
||||||
configuration options below are changed automatically during compilation,
|
configuration options below are changed automatically during compilation,
|
||||||
@ -264,6 +265,31 @@ The macro will be used as is, that is, `CATCH_BREAK_INTO_DEBUGGER();`
|
|||||||
must compile and must break into debugger.
|
must compile and must break into debugger.
|
||||||
|
|
||||||
|
|
||||||
|
## Static analysis support
|
||||||
|
|
||||||
|
> Introduced in Catch2 X.Y.Z.
|
||||||
|
|
||||||
|
Some parts of Catch2, e.g. `SECTION`s, can be hard for static analysis
|
||||||
|
tools to reason about. Catch2 can change its internals to help static
|
||||||
|
analysis tools reason about the tests.
|
||||||
|
|
||||||
|
Catch2 automatically detects some static analysis tools (initial
|
||||||
|
implementation checks for clang-tidy and Coverity), but you can override
|
||||||
|
its detection (in either direction) via
|
||||||
|
|
||||||
|
```
|
||||||
|
CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT // force enables static analysis help
|
||||||
|
CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT // force disables static analysis help
|
||||||
|
```
|
||||||
|
|
||||||
|
_As the name suggests, this is currently experimental, and thus we provide
|
||||||
|
no backwards compatibility guarantees._
|
||||||
|
|
||||||
|
**DO NOT ENABLE THIS FOR BUILDS YOU INTEND TO RUN.** The changed internals
|
||||||
|
are not meant to be runnable, only "scannable".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[Home](Readme.md#top)
|
[Home](Readme.md#top)
|
||||||
|
@ -73,6 +73,7 @@ set(IMPL_HEADERS
|
|||||||
${SOURCES_DIR}/internal/catch_compiler_capabilities.hpp
|
${SOURCES_DIR}/internal/catch_compiler_capabilities.hpp
|
||||||
${SOURCES_DIR}/internal/catch_config_android_logwrite.hpp
|
${SOURCES_DIR}/internal/catch_config_android_logwrite.hpp
|
||||||
${SOURCES_DIR}/internal/catch_config_counter.hpp
|
${SOURCES_DIR}/internal/catch_config_counter.hpp
|
||||||
|
${SOURCES_DIR}/internal/catch_config_static_analysis_support.hpp
|
||||||
${SOURCES_DIR}/internal/catch_config_uncaught_exceptions.hpp
|
${SOURCES_DIR}/internal/catch_config_uncaught_exceptions.hpp
|
||||||
${SOURCES_DIR}/internal/catch_config_wchar.hpp
|
${SOURCES_DIR}/internal/catch_config_wchar.hpp
|
||||||
${SOURCES_DIR}/internal/catch_console_colour.hpp
|
${SOURCES_DIR}/internal/catch_console_colour.hpp
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
#include <catch2/internal/catch_compiler_capabilities.hpp>
|
#include <catch2/internal/catch_compiler_capabilities.hpp>
|
||||||
#include <catch2/internal/catch_config_android_logwrite.hpp>
|
#include <catch2/internal/catch_config_android_logwrite.hpp>
|
||||||
#include <catch2/internal/catch_config_counter.hpp>
|
#include <catch2/internal/catch_config_counter.hpp>
|
||||||
|
#include <catch2/internal/catch_config_static_analysis_support.hpp>
|
||||||
#include <catch2/internal/catch_config_uncaught_exceptions.hpp>
|
#include <catch2/internal/catch_config_uncaught_exceptions.hpp>
|
||||||
#include <catch2/internal/catch_config_wchar.hpp>
|
#include <catch2/internal/catch_config_wchar.hpp>
|
||||||
#include <catch2/internal/catch_console_colour.hpp>
|
#include <catch2/internal/catch_console_colour.hpp>
|
||||||
|
@ -169,6 +169,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#cmakedefine CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT
|
||||||
|
#cmakedefine CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT
|
||||||
|
|
||||||
|
#if defined( CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT ) && \
|
||||||
|
defined( CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT )
|
||||||
|
# error Cannot force STATIC_ANALYSIS_SUPPORT to both ON and OFF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// ------
|
// ------
|
||||||
// Simple toggle defines
|
// Simple toggle defines
|
||||||
// their value is never used and they cannot be overridden
|
// their value is never used and they cannot be overridden
|
||||||
|
34
src/catch2/internal/catch_config_static_analysis_support.hpp
Normal file
34
src/catch2/internal/catch_config_static_analysis_support.hpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
// Copyright Catch2 Authors
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE.txt or copy at
|
||||||
|
// https://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
// SPDX-License-Identifier: BSL-1.0
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* Wrapper for the STATIC_ANALYSIS_SUPPORT configuration option
|
||||||
|
*
|
||||||
|
* Some of Catch2's macros can be defined differently to work better with
|
||||||
|
* static analysis tools, like clang-tidy or coverity.
|
||||||
|
* Currently the main use case is to show that `SECTION`s are executed
|
||||||
|
* exclusively, and not all in one run of a `TEST_CASE`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED
|
||||||
|
#define CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <catch2/catch_user_config.hpp>
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) || defined(__COVERITY__)
|
||||||
|
#define CATCH_INTERNAL_CONFIG_STATIC_ANALYSIS_SUPPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined( CATCH_INTERNAL_CONFIG_STATIC_ANALYSIS_SUPPORT ) && \
|
||||||
|
!defined( CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT ) && \
|
||||||
|
!defined( CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT )
|
||||||
|
# define CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif // CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED
|
@ -78,6 +78,7 @@ internal_headers = [
|
|||||||
'internal/catch_compiler_capabilities.hpp',
|
'internal/catch_compiler_capabilities.hpp',
|
||||||
'internal/catch_config_android_logwrite.hpp',
|
'internal/catch_config_android_logwrite.hpp',
|
||||||
'internal/catch_config_counter.hpp',
|
'internal/catch_config_counter.hpp',
|
||||||
|
'internal/catch_config_static_analysis_support.hpp',
|
||||||
'internal/catch_config_uncaught_exceptions.hpp',
|
'internal/catch_config_uncaught_exceptions.hpp',
|
||||||
'internal/catch_config_wchar.hpp',
|
'internal/catch_config_wchar.hpp',
|
||||||
'internal/catch_console_colour.hpp',
|
'internal/catch_console_colour.hpp',
|
||||||
|
Loading…
Reference in New Issue
Block a user