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