Bug 450744

Summary: QString::toLower()/toUpper().endsWith()/.startsWith()
Product: [Developer tools] clazy Reporter: martonmiklos <martonmiklosqdev>
Component: generalAssignee: Unassigned bugs <unassigned-bugs-null>
Status: REPORTED ---    
Severity: normal CC: smartins
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description martonmiklos 2022-02-23 10:11:22 UTC
I recently came across a code which used the following method to check file extension:

if (fileName.toLower().endsWith(".xml"))

Clearly the author was not aware that the endsWith/startsWith has a second argument for the case sensitivity.

I think it would be beneficial to add a clazy warning to highlight this. 

To summarize:
Throw a warning like "use the cs argument of the endsWith/startsWith" in the case if:
There is a chained call of toLower()/toUpper().endsWith()/.startsWith()
And the endsWith() startsWith() has a single constant argument which does not contain any upper/lower case characters.

I do not know if it is achievable by the clazy (having access to the arguments, types, etc.)
If the idea has positive feedback I could look into implementing it.