https://github.com/spaits updated https://github.com/llvm/llvm-project/pull/76501
From b271420a6e4ed23abf2749d767f986aa16d9fe9d Mon Sep 17 00:00:00 2001 From: Gabor Spaits <gaborspai...@gmail.com> Date: Thu, 28 Dec 2023 14:17:55 +0100 Subject: [PATCH 1/5] [analyzer] Add documentation for std::variant checker --- clang/docs/ReleaseNotes.rst | 1 + clang/docs/analyzer/checkers.rst | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index e21ec78a1e8a77..bf63cc981eb32d 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -1072,6 +1072,7 @@ New features - Added a new experimental checker ``alpha.core.StdVariant`` to detect variant accesses via wrong alternatives. + `Documentation <https://clang.llvm.org/docs/analyzer/checkers.html#alpha-core-stdvariantchecker-c>`__. (`#66481 <https://github.com/llvm/llvm-project/pull/66481>`_) - Added a new experimental checker ``alpha.cplusplus.ArrayDelete`` to detect diff --git a/clang/docs/analyzer/checkers.rst b/clang/docs/analyzer/checkers.rst index 64a4752695f11f..94c712f63d5ba3 100644 --- a/clang/docs/analyzer/checkers.rst +++ b/clang/docs/analyzer/checkers.rst @@ -2095,6 +2095,21 @@ This checker is a part of ``core.StackAddressEscape``, but is temporarily disabl // returned block } +.. _alpha-core-StdVariant: + +alpha.core.StdVariant (C++) +""""""""""""""""""""""""""" +Check if a value of active type is retrieved from an ``std::variant`` instance with ``std::get``. +In case of bad variant type access(the accessed type differs from the active type) +a warning is emitted. Currently this checker does not take exception handling into account. + +.. code-block:: cpp + + void test() { + std::variant <int, char> v = 25; + char c = stg::get<char>(v); // warn + } + .. _alpha-core-TestAfterDivZero: alpha.core.TestAfterDivZero (C) From 450fd58fd64e64b2a0df6cb90b6c232b2d84ece6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Spaits?= <48805437+spa...@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:11:39 +0100 Subject: [PATCH 2/5] Update clang/docs/analyzer/checkers.rst Co-authored-by: Balazs Benics <benicsbal...@gmail.com> --- clang/docs/analyzer/checkers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/analyzer/checkers.rst b/clang/docs/analyzer/checkers.rst index 94c712f63d5ba3..7903ad75bcb831 100644 --- a/clang/docs/analyzer/checkers.rst +++ b/clang/docs/analyzer/checkers.rst @@ -2101,7 +2101,7 @@ alpha.core.StdVariant (C++) """"""""""""""""""""""""""" Check if a value of active type is retrieved from an ``std::variant`` instance with ``std::get``. In case of bad variant type access(the accessed type differs from the active type) -a warning is emitted. Currently this checker does not take exception handling into account. +a warning is emitted. Currently, this checker does not take exception handling into account. .. code-block:: cpp From 6ba5052007ef724e90f6665d6df350ee6d9aa1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Spaits?= <48805437+spa...@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:11:46 +0100 Subject: [PATCH 3/5] Update clang/docs/analyzer/checkers.rst Co-authored-by: Balazs Benics <benicsbal...@gmail.com> --- clang/docs/analyzer/checkers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/analyzer/checkers.rst b/clang/docs/analyzer/checkers.rst index 7903ad75bcb831..eb01fcf8020802 100644 --- a/clang/docs/analyzer/checkers.rst +++ b/clang/docs/analyzer/checkers.rst @@ -2107,7 +2107,7 @@ a warning is emitted. Currently, this checker does not take exception handling i void test() { std::variant <int, char> v = 25; - char c = stg::get<char>(v); // warn + char c = stg::get<char>(v); // warn: "int" is the active alternative } .. _alpha-core-TestAfterDivZero: From 7615eaab9fda0799543a7b708a68694ea5d774a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Spaits?= <48805437+spa...@users.noreply.github.com> Date: Thu, 28 Dec 2023 18:22:51 +0100 Subject: [PATCH 4/5] Update checkers.rst Co-authored-by: whisperity <whisper...@gmail.com> --- clang/docs/analyzer/checkers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/analyzer/checkers.rst b/clang/docs/analyzer/checkers.rst index eb01fcf8020802..cce1af65cc608b 100644 --- a/clang/docs/analyzer/checkers.rst +++ b/clang/docs/analyzer/checkers.rst @@ -2106,7 +2106,7 @@ a warning is emitted. Currently, this checker does not take exception handling i .. code-block:: cpp void test() { - std::variant <int, char> v = 25; + std::variant<int, char> v = 25; char c = stg::get<char>(v); // warn: "int" is the active alternative } From be919aa74856eee9b1316bc79e13fbbfc081c671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Spaits?= <48805437+spa...@users.noreply.github.com> Date: Thu, 28 Dec 2023 18:23:12 +0100 Subject: [PATCH 5/5] Update checkers.rst Co-authored-by: DonatNagyE <donat.n...@ericsson.com> --- clang/docs/analyzer/checkers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/analyzer/checkers.rst b/clang/docs/analyzer/checkers.rst index cce1af65cc608b..bb637cf1b8007b 100644 --- a/clang/docs/analyzer/checkers.rst +++ b/clang/docs/analyzer/checkers.rst @@ -2100,7 +2100,7 @@ This checker is a part of ``core.StackAddressEscape``, but is temporarily disabl alpha.core.StdVariant (C++) """"""""""""""""""""""""""" Check if a value of active type is retrieved from an ``std::variant`` instance with ``std::get``. -In case of bad variant type access(the accessed type differs from the active type) +In case of bad variant type access (the accessed type differs from the active type) a warning is emitted. Currently, this checker does not take exception handling into account. .. code-block:: cpp _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits