[Libreoffice] unused function parameters
Stephan Bergmann
sbergman at redhat.com
Tue Jan 24 03:04:33 PST 2012
When we made the original OOo code base warning-clean a number of years
ago, many warnings about unused parameters were silenced by removing the
parameter name, instead of actually fixing the code by dropping the
unused parameter. Of course, dropping an unused parameter is not always
the right fix, e.g., in virtual functions (where some overrides require
the parameter and others don't, so it consistently needs to be present
in all overrides).
That gave me the idea of writing a GCC plugin (as a gcc-python-plugin
script, see <https://fedorahosted.org/gcc-python-plugin/>) that looks
for unused, unnamed parameters (so that they can be revisited now,
deciding on a proper fix), but takes into account patterns where the
parameter is likely legitimately unused (like in the case of virtual
functions). (In turn, I wrote that script mainly to have something to
present as <http://fosdem.org/2012/schedule/event/libocompiler>
"Analysing LibreOffice with Compiler plugins.")
However, there are still a number of legitimately unused function
parameters that the script does not catch (think about functions that
need to adhere to a certain signature, so their addresses can be
assigned to function pointers of given type). So I started to annotate
those cases with GCC's __attribute__ ((unused)), wrapped in a newly
introduced SAL_UNUSED_PARAMETER (sal/types.h), in the LO source code
(and let the script ignore those). Unfortunately, I also needed to add
__attribute__ ((unused)) annotations to a number of headers from
external modules included in the LO code base (I did that with specific
new patches that are only relevant when running the plugin script, and
are only applied to the external source when building with GCC).
The work turned out to be more tedious than anticipated, with many
legitimately unused parameters having to be annotated, and not that many
spectacular cases where removing a truly unused parameter has a rippling
effect of allowing to also remove sizeable chunks of code that supplied
values for that parameter in calls of the given function. Anyway, I
carried along up into somewhere in svl, the result is
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=7c704c78d3c652504c064b4ac7af55a2c1ee49bb>
"Removed some unused parameters; added SAL_UNUSED_PARAMETER." Maybe
carrying this further up into the higher modules will lead to more
satisfying results... I'll see if I can extract an easy hack from this.
So, just in case you stumble across a newly introduced
SAL_UNUSED_PARAMETER, you know what it is there for. The GCC plugin
script itself is detailed at
<https://fedorahosted.org/pipermail/gcc-python-plugin/2012-January/000157.html>
"Additions for C++."
Stephan
More information about the LibreOffice
mailing list