On 08/29/2016 04:14 PM, 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) {
>          ^~~~~    ~~~~

This one is apparently an old holdoever from C and not recommended
currently...

See. e.g:
http://stackoverflow.com/questions/17772103/can-i-use-if-pointer-instead-of-if-pointer-null

It probably needs an update to accomplish what it's trying to do.


> 
> 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) {
>      ^~~~    ~
> 

Same here...

> I'd like to just nuke these comparisions.
> 
> 
> 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.
> 
> 
> 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.
> 
> 
> For -Wunused-const-variable and -Wunused-variable, I propose just
> deleting them unless they are referenced by conditionally compiled code,
> in which case I would make the variable declaration conditional as well.
> 
> 
> I fixed one other case of -Winfinite-recursion.  I'm pretty sure this is
> just one error, but it is contained in a header.
> 
> 
> I think -Wshadow warnings should be fixed by renaming the variable.
> 
> 
> I don't recall ever seeing -Wunused-function scroll by, but if functions
> are totally unused, they should be deleted.
> 
> 
> The parentheses warnings should just get fixed.
> 
> 
> This is an example -Wdelete-non-virtual-dtor warning:
> 
> warning: delete called on non-final 'RscError' that has virtual functions but 
> non-virtual destructor [-Wdelete-non-virtual-dtor]
>         delete pErrHdl;
> 
> My C++ book says that non-virtual destructors are bad generally bad.  We
> also compile with -Wno-non-virtual-dtor to suppress even more warnings.
> Does anyone know why?
> 
> 
> The -Wformat-security warnings should definitely be fixed.
> 
> 
> The -Wformat warnings should also be fixed, though care must be taken
> for both 32-bit and 64-bit builds.
> 
> 
> I haven't really looked at the other warnings in any detail.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
> For additional commands, e-mail: dev-h...@openoffice.apache.org
> 

-- 
----------------------------------------
Kay Schenk
Apache OpenOffice

"Things work out best for those who make
 the best of the way things work out."
                         -- John Wooden

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org

Reply via email to