bind9/cocci/implicit_casts_warning.spatch
Colin Vidal 754595ea2d add spatch to detect implicit bool/int/result cast
Detection of implicit cast from a boolean into an int, or an
isc_result_t into a boolean (either in an assignement or return
position).

If such pattern is found, a warning comment is added into the code (and
the CI will fails) so the error can be spotted and manually fixed.
2025-11-12 11:31:28 +01:00

56 lines
1 KiB
Text

@bool_into_int_warning@
position p;
int i;
bool b;
@@
i = b@p;
@script:python@
p << bool_into_int_warning.p;
@@
report = coccilib.report.build_report(p[0], "WARNING: implicit bool->int cast on assignment")
sys.stderr.write(report)
@return_isc_result_t_into_bool_warning@
position p;
isc_result_t result;
identifier fn;
identifier literalresult =~ "ISC_R_.*|DNS_R_.*|DST_R_.*|ISCCC_R_.*";
@@
bool fn(...) {
<...
(
return result@p;
|
return literalresult@p;
)
...>
}
@script:python@
p << return_isc_result_t_into_bool_warning.p;
@@
report = coccilib.report.build_report(p[0], "WARNING: implicit isc_result_t->bool cast on return value")
sys.stderr.write(report)
@isc_result_t_into_bool_warning@
position p;
isc_result_t result;
identifier literalresult =~ "ISC_R_.*|DNS_R_.*|DST_R_.*|ISCCC_R_.*";
bool b;
@@
(
b = result@p;
|
b = literalresult@p;
)
@script:python@
p << isc_result_t_into_bool_warning.p;
@@
report = coccilib.report.build_report(p[0], "WARNING: implicit isc_result_t->bool cast on assignment")
sys.stderr.write(report)