| Summary: | False positive check "qstring-allocations" for function translate | ||
|---|---|---|---|
| Product: | [Developer tools] clazy | Reporter: | Roman <dismine> |
| Component: | general | Assignee: | Unassigned bugs <unassigned-bugs-null> |
| Status: | RESOLVED NOT A BUG | ||
| Severity: | normal | CC: | smartins |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | compilable-testcase | ||
Can you show a compilable-testcase. Must be minimal, as I'll shove the code directly into clazy's unit-tests thanks Created attachment 111374 [details]
compilable-testcase
Minimal project that shows false positive warning. Uncomment strings to test canonical way.
tr() doesn't take QString as argument, so there's no allocation
You can either use const char* in your translate function, or:
translate(QStringLiteral("context"), QStringLiteral("string"), QStringLiteral("disambiguation"));
I don't see a way clazy could distinguish this case
Yes, you are right. This ticket should be closed. |
In my code i use little hack. If wrap string to a function translate, it will be marked for translation. No matter what namespace contains this function. So, i have #define translate(context, source, disambiguation) QmuTranslation::translate((context), (source), (disambiguation)) And use it like this: translate("QmuParserErrorMsg", "Unexpected token \"$TOK$\" found at position $POS$.", "Math parser error messages. Left untouched \"$TOK$\" and $POS$") When lupdate will parse a source code it will mark a string for translation. But clazy doesn't recognize this case and warn about "qstring-allocations". Where for canonical translate functions it doesn't.