mirror of
https://github.com/esphome/esphome.git
synced 2026-05-21 17:39:00 +08:00
[ci-custom] Suggest uint32_to_str/int8_to_str for integer formatting (#15970)
This commit is contained in:
+10
-2
@@ -837,7 +837,16 @@ def lint_no_std_to_string(fname, match):
|
||||
f"{highlight('std::to_string()')} (including unqualified {highlight('to_string()')}) "
|
||||
f"allocates heap memory. On long-running embedded devices, repeated heap allocations "
|
||||
f"fragment memory over time.\n"
|
||||
f"Please use {highlight('snprintf()')} with a stack buffer instead.\n"
|
||||
f"\n"
|
||||
f"For plain integer formatting, prefer the dedicated helpers in helpers.h over "
|
||||
f"{highlight('snprintf()')} — they avoid pulling in printf formatting code and are "
|
||||
f"smaller and faster:\n"
|
||||
f" int8_t: {highlight('int8_to_str(buf, val)')} (buf >= 5 bytes)\n"
|
||||
f" uint8_t/uint16_t/uint32_t: {highlight('uint32_to_str(buf, val)')} (buf = UINT32_MAX_STR_SIZE; smaller types auto-widen)\n"
|
||||
f"Example: {highlight('char buf[UINT32_MAX_STR_SIZE]; uint32_to_str(buf, value);')}\n"
|
||||
f"For sensor values, use {highlight('value_accuracy_to_buf()')} from helpers.h.\n"
|
||||
f"\n"
|
||||
f"Otherwise use {highlight('snprintf()')} with a stack buffer.\n"
|
||||
f"\n"
|
||||
f"Buffer sizes and format specifiers (sizes include sign and null terminator):\n"
|
||||
f" uint8_t: 4 chars - %u (or PRIu8)\n"
|
||||
@@ -851,7 +860,6 @@ def lint_no_std_to_string(fname, match):
|
||||
f" float/double: 24 chars - %.8g (15 digits + sign + decimal + e+XXX)\n"
|
||||
f" 317 chars - %f (for DBL_MAX: 309 int digits + decimal + 6 frac + sign)\n"
|
||||
f"\n"
|
||||
f"For sensor values, use value_accuracy_to_buf() from helpers.h.\n"
|
||||
f'Example: char buf[11]; snprintf(buf, sizeof(buf), "%" PRIu32, value);\n'
|
||||
f"(If strictly necessary, add `{highlight('// NOLINT')}` to the end of the line)"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user