28c23cd4c3
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>
63 lines
867 B
Plaintext
63 lines
867 B
Plaintext
@ strbuf_addf_with_format_only @
|
|
expression E;
|
|
constant fmt !~ "%";
|
|
@@
|
|
- strbuf_addf
|
|
+ strbuf_addstr
|
|
(E,
|
|
(
|
|
fmt
|
|
|
|
|
_(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";
|
|
@@
|
|
- strbuf_addf(E1, "%@F@", E2);
|
|
+ strbuf_addstr(E1, E2);
|
|
|
|
@@
|
|
expression E1, E2, E3;
|
|
@@
|
|
- strbuf_addstr(E1, find_unique_abbrev(E2, E3));
|
|
+ strbuf_add_unique_abbrev(E1, E2, E3);
|
|
|
|
@@
|
|
expression E1, E2;
|
|
@@
|
|
- strbuf_addstr(E1, real_path(E2));
|
|
+ strbuf_add_real_path(E1, E2);
|