strbuf.cocci: suggest strbuf_addbuf() to add one strbuf to an other
The best way to add one strbuf to an other is via: strbuf_addbuf(&sb, &sb2); This is a bit more idiomatic and efficient than: strbuf_addstr(&sb, sb2.buf); because the size of the second strbuf is known and thus it can spare a strlen() call, and much more so than: strbuf_addf(&sb, "%s", sb2.buf); because it can spare the whole vsnprintf() formatting magic. Add new semantic patches to 'contrib/coccinelle/strbuf.cocci' to catch these undesired patterns and to suggest strbuf_addbuf() instead. Luckily, our codebase is already clean from any such undesired patterns (but one of the in-flight topics just tried to sneak in such a strbuf_addf() call). Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0d0ac3826a
commit
28c23cd4c3
@ -12,6 +12,36 @@ constant fmt !~ "%";
|
||||
)
|
||||
);
|
||||
|
||||
@@
|
||||
expression E;
|
||||
struct strbuf SB;
|
||||
format F =~ "s";
|
||||
@@
|
||||
- strbuf_addf(E, "%@F@", SB.buf);
|
||||
+ strbuf_addbuf(E, &SB);
|
||||
|
||||
@@
|
||||
expression E;
|
||||
struct strbuf *SBP;
|
||||
format F =~ "s";
|
||||
@@
|
||||
- strbuf_addf(E, "%@F@", SBP->buf);
|
||||
+ strbuf_addbuf(E, SBP);
|
||||
|
||||
@@
|
||||
expression E;
|
||||
struct strbuf SB;
|
||||
@@
|
||||
- strbuf_addstr(E, SB.buf);
|
||||
+ strbuf_addbuf(E, &SB);
|
||||
|
||||
@@
|
||||
expression E;
|
||||
struct strbuf *SBP;
|
||||
@@
|
||||
- strbuf_addstr(E, SBP->buf);
|
||||
+ strbuf_addbuf(E, SBP);
|
||||
|
||||
@@
|
||||
expression E1, E2;
|
||||
format F =~ "s";
|
||||
|
Loading…
Reference in New Issue
Block a user