cocinelle: Add a sematic patch file for ztest string assertions

ztest now provides functionality to compare strings.
These are simpler to use than the strcmp ways.

The semantic patch transforms many of the commonly used patterns.
It does not handle variable length macros.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
This commit is contained in:
Rubin Gerritsen 2024-06-11 14:36:17 +02:00 committed by Alberto Escolar
parent fc377363e4
commit 470a0fcaa5

View file

@ -0,0 +1,79 @@
/// Find cases where ztest string comparisons macros can be used
// Copyright: (C) 2024 Nordic Semiconductor ASA
// SPDX-License-Identifier: Apache-2.0
// Confidence: LOW
// Options: --no-includes --include-headers
virtual patch
virtual context
virtual org
virtual report
// Comparing result of strcmp with 0
@@ expression E1,E2; @@
- zassert_equal(strcmp(E1, E2), 0);
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_equal(strcmp(E1, E2), 0, E3);
+ zassert_str_equal(E1, E2, E3);
@@ expression E1,E2; @@
- zassert_equal(0, strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_equal(0, !strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
// Using assert_true with !strcmp
@@ expression E1,E2; @@
- zassert_true(!strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_true(!strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
// using zassert_true with strcmp(E1, E2) == 0
@@expression E1,E2; @@
- zassert_true(strcmp(E1, E2) == 0);
+ zassert_str_equal(E1, E2);
@@expression E1,E2; @@
- zassert_true((strcmp(E1, E2) == 0));
+ zassert_str_equal(E1, E2);
@@expression E1,E2,E3; @@
- zassert_true(strcmp(E1, E2) == 0, E3);
+ zassert_str_equal(E1, E2, E3);
@@expression E1,E2,E3; @@
- zassert_true((strcmp(E1, E2) == 0), E3);
+ zassert_str_equal(E1, E2, E3);
// using zassert_true with 0 == strcmp(E1, E2)
@@expression E1,E2; @@
- zassert_true(0 == strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@expression E1,E2; @@
- zassert_true((0 == strcmp(E1, E2)));
+ zassert_str_equal(E1, E2);
@@expression E1,E2,E3; @@
- zassert_true(0 == strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
@@expression E1,E2,E3; @@
- zassert_true((0 == strcmp(E1, E2)), E3);
+ zassert_str_equal(E1, E2, E3);