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. 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