CHECK: Macro argument reuse 'ptr' - possible side-effects? #58: FILE: test/cmocka/include/test_group_generator.h:2: +#define setup_alloc(ptr, type, size, offset) do {\ + if (ptr)\ + free(ptr);\ + ptr = malloc(sizeof(type) * (size) + offset);\ + if (ptr == NULL)\ + return -1;\ +} while (0) WARNING: Macros with flow control statements should be avoided #58: FILE: test/cmocka/include/test_group_generator.h:2: +#define setup_alloc(ptr, type, size, offset) do {\ + if (ptr)\ + free(ptr);\ + ptr = malloc(sizeof(type) * (size) + offset);\ + if (ptr == NULL)\ + return -1;\ +} while (0) CHECK: Comparison to NULL could be written "!ptr" #62: FILE: test/cmocka/include/test_group_generator.h:6: + if (ptr == NULL)\ CHECK: Macro argument reuse 'result' - possible side-effects? #66: FILE: test/cmocka/include/test_group_generator.h:10: +#define setup_part(result, setup_func) do {\ + result |= setup_func;\ + if (result)\ + return result;\ +} while (0) WARNING: Macros with flow control statements should be avoided #66: FILE: test/cmocka/include/test_group_generator.h:10: +#define setup_part(result, setup_func) do {\ + result |= setup_func;\ + if (result)\ + return result;\ +} while (0) CHECK: Macro argument reuse 'prefix_setup' - possible side-effects? #101: FILE: test/cmocka/include/test_group_generator.h:45: +#define gen_test_with_prefix(prefix_check, prefix_setup, name, ...) \ +static void gen_test_concat_func(prefix_setup, name, __VA_ARGS__) \ +(void **state) {\ + if (!gen_test_concat_flag(prefix_setup, __VA_ARGS__)) {\ + if (_setup(state, __VA_ARGS__))\ + exit(1);\ + gen_test_concat_base(prefix_setup)(state);\ + ++gen_test_concat_flag(prefix_setup, __VA_ARGS__);\ + } \ + gen_test_concat(prefix_check, name)(state);\ +} CHECK: Macro argument reuse 'name' - possible side-effects? #101: FILE: test/cmocka/include/test_group_generator.h:45: +#define gen_test_with_prefix(prefix_check, prefix_setup, name, ...) \ +static void gen_test_concat_func(prefix_setup, name, __VA_ARGS__) \ +(void **state) {\ + if (!gen_test_concat_flag(prefix_setup, __VA_ARGS__)) {\ + if (_setup(state, __VA_ARGS__))\ + exit(1);\ + gen_test_concat_base(prefix_setup)(state);\ + ++gen_test_concat_flag(prefix_setup, __VA_ARGS__);\ + } \ + gen_test_concat(prefix_check, name)(state);\ +} WARNING: macros should not use a trailing semicolon #126: FILE: test/cmocka/include/test_group_generator.h:70: +#define flg_test_group(prefix, ...)\ + static int gen_test_concat_flag(prefix, __VA_ARGS__); CHECK: Alignment should match open parenthesis #1113: FILE: test/cmocka/src/lib/lib/strcheck.c:58: +static int setup_change(void **state, + const size_t change_beg, const size_t change_end) CHECK: Alignment should match open parenthesis #1149: FILE: test/cmocka/src/lib/lib/strcheck.c:94: +static int _setup(void **state, size_t data_len, + size_t change_beg, size_t change_end) CHECK: Lines should not end with a '(' #1213: FILE: test/cmocka/src/lib/lib/strcheck.c:158: + return check_arrs( CHECK: Lines should not end with a '(' #1222: FILE: test/cmocka/src/lib/lib/strcheck.c:167: + return check_arrs( CHECK: Lines should not end with a '(' #1237: FILE: test/cmocka/src/lib/lib/strcheck.c:182: + assert_int_equal( CHECK: Lines should not end with a '(' #1238: FILE: test/cmocka/src/lib/lib/strcheck.c:183: + check_arrs( CHECK: Lines should not end with a '(' #1253: FILE: test/cmocka/src/lib/lib/strcheck.c:198: + assert_int_equal( CHECK: Lines should not end with a '(' #1254: FILE: test/cmocka/src/lib/lib/strcheck.c:199: + check_arrs( CHECK: Lines should not end with a '(' #1267: FILE: test/cmocka/src/lib/lib/strcheck.c:212: + assert_int_equal( CHECK: Lines should not end with a '(' #1280: FILE: test/cmocka/src/lib/lib/strcheck.c:225: + test_data->func_ret = memset( CHECK: Lines should not end with a '(' #1293: FILE: test/cmocka/src/lib/lib/strcheck.c:238: + bzero( CHECK: Lines should not end with a '(' #1311: FILE: test/cmocka/src/lib/lib/strcheck.c:256: + test_data->func_ret = memcpy( CHECK: Alignment should match open parenthesis #1326: FILE: test/cmocka/src/lib/lib/strcheck.c:271: + assert_int_equal(expected, + check_test_arrs()); CHECK: Alignment should match open parenthesis #1334: FILE: test/cmocka/src/lib/lib/strcheck.c:279: + assert_int_equal(expected, + check_arrs(test_data->before + test_data_change->beg, CHECK: Alignment should match open parenthesis #1335: FILE: test/cmocka/src/lib/lib/strcheck.c:280: + check_arrs(test_data->before + test_data_change->beg, + test_data->func_ret, CHECK: Alignment should match open parenthesis #1342: FILE: test/cmocka/src/lib/lib/strcheck.c:287: + assert_int_equal(-1, + check_arr(test_data->after + test_data_change->beg, CHECK: Alignment should match open parenthesis #1343: FILE: test/cmocka/src/lib/lib/strcheck.c:288: + check_arr(test_data->after + test_data_change->beg, + test_data_change->len, CHECK: Alignment should match open parenthesis #1350: FILE: test/cmocka/src/lib/lib/strcheck.c:295: + assert_int_equal(-1, + check_arr(test_data->func_ret, CHECK: Alignment should match open parenthesis #1351: FILE: test/cmocka/src/lib/lib/strcheck.c:296: + check_arr(test_data->func_ret, + test_data_change->len, CHECK: Alignment should match open parenthesis #1358: FILE: test/cmocka/src/lib/lib/strcheck.c:303: + assert_int_equal(-1, + check_test_arrs_with_offset(test_data_change->end)); CHECK: Alignment should match open parenthesis #1364: FILE: test/cmocka/src/lib/lib/strcheck.c:309: + assert_int_equal(-1, + check_arrs(test_data->func_ret + test_data_change->len, CHECK: Alignment should match open parenthesis #1365: FILE: test/cmocka/src/lib/lib/strcheck.c:310: + check_arrs(test_data->func_ret + test_data_change->len, + test_data->before + test_data_change->end, ERROR: Macros with complex values should be enclosed in parentheses #1378: FILE: test/cmocka/src/lib/lib/strcheck.c:323: +#define bind_test_group_ref_ret(bind, ...)\ + bind(ref_beg, __VA_ARGS__)\ + bind(ret_beg, __VA_ARGS__)\ + bind(ref_mid, __VA_ARGS__)\ + bind(ret_mid, __VA_ARGS__)\ + bind(ref_end, __VA_ARGS__)\ + bind(ret_end, __VA_ARGS__) CHECK: Macro argument reuse 'bind' - possible side-effects? #1378: FILE: test/cmocka/src/lib/lib/strcheck.c:323: +#define bind_test_group_ref_ret(bind, ...)\ + bind(ref_beg, __VA_ARGS__)\ + bind(ret_beg, __VA_ARGS__)\ + bind(ref_mid, __VA_ARGS__)\ + bind(ret_mid, __VA_ARGS__)\ + bind(ref_end, __VA_ARGS__)\ + bind(ret_end, __VA_ARGS__) ERROR: Macros with complex values should be enclosed in parentheses #1386: FILE: test/cmocka/src/lib/lib/strcheck.c:331: +#define bind_test_group_ref(bind, ...)\ + bind(ref_beg, __VA_ARGS__)\ + bind(ref_mid, __VA_ARGS__)\ + bind(ref_end, __VA_ARGS__) CHECK: Macro argument reuse 'bind' - possible side-effects? #1386: FILE: test/cmocka/src/lib/lib/strcheck.c:331: +#define bind_test_group_ref(bind, ...)\ + bind(ref_beg, __VA_ARGS__)\ + bind(ref_mid, __VA_ARGS__)\ + bind(ref_end, __VA_ARGS__) ERROR: Macros with complex values should be enclosed in parentheses #1408: FILE: test/cmocka/src/lib/lib/strcheck.c:353: +#define run_test_group_action(action, bind_macro) \ + action(bind_macro, 3, 2, 2) /*change none characters*/\ + action(bind_macro, 5, 0, 1) /*change first character */\ + action(bind_macro, 7, 0, 7) /*change all characters*/\ + action(bind_macro, 9, 3, 6) /*change some characters*/\ + action(bind_macro, 2048, 512, 1024) /*change some character - long*/ CHECK: Macro argument reuse 'action' - possible side-effects? #1408: FILE: test/cmocka/src/lib/lib/strcheck.c:353: +#define run_test_group_action(action, bind_macro) \ + action(bind_macro, 3, 2, 2) /*change none characters*/\ + action(bind_macro, 5, 0, 1) /*change first character */\ + action(bind_macro, 7, 0, 7) /*change all characters*/\ + action(bind_macro, 9, 3, 6) /*change some characters*/\ + action(bind_macro, 2048, 512, 1024) /*change some character - long*/ CHECK: Macro argument reuse 'bind_macro' - possible side-effects? #1408: FILE: test/cmocka/src/lib/lib/strcheck.c:353: +#define run_test_group_action(action, bind_macro) \ + action(bind_macro, 3, 2, 2) /*change none characters*/\ + action(bind_macro, 5, 0, 1) /*change first character */\ + action(bind_macro, 7, 0, 7) /*change all characters*/\ + action(bind_macro, 9, 3, 6) /*change some characters*/\ + action(bind_macro, 2048, 512, 1024) /*change some character - long*/ CHECK: Avoid CamelCase: #1427: FILE: test/cmocka/src/lib/lib/strcheck.c:372: + const struct CMUnitTest tests[] = { total: 3 errors, 3 warnings, 32 checks, 490 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. 0001-lib-strcheck-unified-generic-tester-for-string-memor.patch has style problems, please review. NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.