On 29 Aug, Don Lewis wrote:
> When building OpenOffice trunk revsion r1758161 as a FreeBSD port on
> FreeBSD 12.0-CURRENT with clang 3.8.0, I get the following warnings.
> I'm mostly interested in the OpenOffice code and not the bundled
> external code, so I specifically built the FreeBSD port it uses
> --with-system-foo extensively which minimizes the compilation of third
> party code. The total number of warnings is 5105.
>
> 1175 -Wtautological-undefined-compare
> 949 -Wunused-private-field
> 660 -Wshift-negative-value
> 391 -Wunused-parameter
> 362 -Wunused-const-variable
> 312 -Woverloaded-virtual
> 177 -Wunused-variable
> 116 -Winfinite-recursion
> 109 -Wlogical-op-parentheses
> 93 -Wsign-compare
> 76 -Wdelete-non-virtual-dtor
> 72 -Wint-to-void-pointer-cast
> 63 -Wshadow
> 55 -Wunused-function
> 41 -Wformat
> 36 -Wreturn-type-c-linkage
> 30 -Wchar-subscripts
> 27 -Wdeprecated-declarations
> 26 -Wundefined-bool-conversion
> 26 -Wsizeof-pointer-memaccess
> 26 -Wformat-security
> 24 -Wunused-local-typedef
> 22 -Wmacro-redefined
> 21 -Wswitch
> 20 -Wbitwise-op-parentheses
> 18 -Winvalid-source-encoding
> 13 -Wuninitialized
> 11 -Wtautological-compare
> 11 -Wlogical-not-parentheses
> 11 -Wdangling-else
> 9 -Wmismatched-new-delete
> 8 -Wimplicit-function-declaration
> 8 -Wheader-guard
> 8 -Wcomment
> 7 -Wtautological-constant-out-of-range-compare
> 7 -Wself-assign
> 6 -Wunused-value
> 6 -Wunneeded-internal-declaration
> 6 -Wtautological-pointer-compare
> 6 -Wpointer-bool-conversion
> 6 -Wparentheses-equality
> 6 -Wdynamic-class-memaccess
> 6 -Wconstant-conversion
> 5 -Wpointer-sign
> 4 -Wnull-conversion
> 3 -Wunsequenced
> 3 -Wreorder
> 3 -Wknr-promoted-parameter
> 3 -Wint-to-pointer-cast
> 2 -Wstrncat-size
> 2 -Wstring-compare
> 2 -Wsometimes-uninitialized
> 2 -Wconstant-logical-operand
> 2 -Warray-bounds
> 1 -Wunused-comparison
> 1 -Wunknown-pragmas
> 1 -Wstring-plus-int
> 1 -Wpotentially-evaluated-expression
> 1 -Wnon-literal-null-conversion
> 1 -Wmismatched-tags
> 1 -Wincompatible-pointer-types-discards-qualifiers
> 1 -Wimplicit-int
> 1 -Wignored-qualifiers
> 1 -Wformat-extra-args
> 1 -Wcompare-distinct-pointer-types
> 1 -Wc++11-compat-deprecated-writable-strings
>
>
> A couple -Wtautological-undefined-compare warnings:
>
> warning: reference cannot be bound to dereferenced null pointer in
> well-defined C++ code; comparison may be assumed to always evaluate to false
> [-Wtautologica
> l-undefined-compare]
> if (&other == NULL) {
> ^~~~~ ~~~~
>
> warning: 'this' pointer cannot be null in well-defined C++ code; comparison
> may be assumed to always evaluate to false [-Wtautological-undefin
> ed-compare]
> if(this == 0 || this == &src) {
> ^~~~ ~
>
> I'd like to just nuke these comparisions.
It looks like all the noise actually just stems from 26 instances of the
first of these and three of the second.
> To fix the -Wunused-private-field private field warnings, I'd prefer to
> delete them, but that would have the side effect of breaking the ABI if
> an extensions use the class constructor. The alternative would be to
> mark them unused. I don't think there are actually many cases of this.
> The same warning gets generated anytime the header is included.
There seem to be a lot more of these than I expected.
> In the case of -Wshift-negative-value, result of shifting negative
> values is undefined. This is generally fixable by using unsigned values
> instead.
>
>
> I'm not sure what to about -Wunused-parameter. It's probably a case by
> case situation where it may sometimes make sense to have a variant
> function that doesn't have that parameter and modify the callers. The
> alternative is to mark the argument as unused. I haven't really
> examined any of these in detail.
I've seen a mixture of causes. Some are due to conditional
compiliation, some are class methods where the parameter is only
sometimes used.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]