[LLVMbugs] [Bug 14101] New: Feature Request: warn on over-generalised functions
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Oct 16 13:48:09 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=14101
Bug #: 14101
Summary: Feature Request: warn on over-generalised functions
Product: clang
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P
Component: Static Analyzer
AssignedTo: kremenek at apple.com
ReportedBy: paul.holden at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Hello,
I was tidying up our codebase today, and realised that the refactoring that I
was performing might make a useful static analyser warning.
The functions I was looking at were overgeneralised - everywhere they were
called in the codebase specified the same arguments. For example, we had
something like this:
Object * Clone(Object * object, Matrix * transform, Colour * color, float *
mass) {
Object * copy = object->clone();
if (transform) { copy->SetPos(*transform); }
if (color) { copy->SetColor(*color); }
if (mass) { copy->SetMass(*mass); }
return copy;
}
Everywhere Clone was called, we always passed NULL for color and mass. (I
suspect they used to do something useful, but the code has changed over time).
So I removed the arguments, simplified the body of Clone() and tidied up all
the call sites.
After manually tidying up a bunch of functions like this, I realised that it
might make a useful static analysis warning. Something like:
'Clone' is always called with NULL for argument 2 ('color').
'Clone' is always called with NULL for argument 3 ('mass').
I can see false-positives being an issue. e.g. one obvious example springs to
mind:
'memset' is always called with 0 for argument 2 ('value').
But in general I think this would be a useful scenario to check for - it
certainly feels similar to 'function X is never called' or 'conditional
expression is constant' classes of warnings.
Is this something that would be viable for the static analyser to check for?
Regards,
Paul
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list