When 'unused.cocci' was added in 4f40f6cb73 (cocci: add and apply a
rule to find "unused" strbufs, 2022-07-05) it found three unused
strbufs, and when it was generalized in the next commit it managed to
find an unused string_list as well. That's four unused variables in
over 17 years, so apparently we rarely make this mistake.
Unfortunately, applying 'unused.cocci' is quite expensive, e.g. it
increases the from-scratch runtime of 'make coccicheck' by over 5:30
minutes or over 160%:
$ make -s cocciclean
$ time make -s coccicheck
* new spatch flags
real 8m56.201s
user 0m0.420s
sys 0m0.406s
$ rm contrib/coccinelle/unused.cocci contrib/coccinelle/tests/unused.*
$ make -s cocciclean
$ time make -s coccicheck
* new spatch flags
real 3m23.893s
user 0m0.228s
sys 0m0.247s
That's a lot of runtime spent for not much in return, and arguably an
unused struct instance sneaking in is not that big of a deal to
justify the significantly increased runtime.
Remove 'unused.cocci', because we are not getting our CPU cycles'
worth.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
SZEDER Gábor committedApr 20, 2023 at 22:53 UTC138ef8068c54d72c9bd1b09753408fde7750ec86
deleted file mode 100644index d84046f82e..0000000000--- a/contrib/coccinelle/unused.cocci+++ /dev/null@@ -1,43 +0,0 @@-// This rule finds sequences of "unused" declerations and uses of a-// variable, where "unused" is defined to include only calling the-// equivalent of alloc, init & free functions on the variable.-@@-type T;-identifier I;-// STRBUF_INIT, but also e.g. STRING_LIST_INIT_DUP (so no anchoring)-constant INIT_MACRO =~ "_INIT";-identifier MALLOC1 =~ "^x?[mc]alloc$";-identifier INIT_ASSIGN1 =~ "^get_worktrees$";-identifier INIT_CALL1 =~ "^[a-z_]*_init$";-identifier REL1 =~ "^[a-z_]*_(release|reset|clear|free)$";-identifier REL2 =~ "^(release|clear|free)_[a-z_]*$";-@@--(-- T I;-|-- T I = { 0 };-|-- T I = INIT_MACRO;-|-- T I = MALLOC1(...);-|-- T I = INIT_ASSIGN1(...);-)--<... when != \( I \| &I \)-(-- \( INIT_CALL1 \)( \( I \| &I \), ...);-|-- I = \( INIT_ASSIGN1 \)(...);-|-- I = MALLOC1(...);-)-...>--(-- \( REL1 \| REL2 \)( \( I \| &I \), ...);-|-- \( REL1 \| REL2 \)( \( &I \| I \) );-)- ... when != \( I \| &I \)