Äbout cpplint

Stephan Bergmann sbergman at redhat.com
Tue Apr 22 04:11:01 PDT 2014


On 04/20/2014 11:03 AM, julien2412 wrote:
> I gave a try to cpplint
> (http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py) with
> some changes so it scan subdirectories.
> Except pure formatting warnings, it reports things like this:
> 1) ./drawinglayer/source/primitive2d/polygonprimitive2d.cxx:274:  Consider
> using rand_r(...) instead of rand(...) for improved thread safety.
> [runtime/threadsafe_fn]
> (other functions quoted in the py script:
>   asctime_r, ctime_r, getgrgid_r, getgrnam_r, getlogin_r, getpwnam_r,
> getpwuid_r, gmtime_r, localtime_r, strtok_r, ttyname_r)

If this use of rand() is really about the function from stdlib.h (and 
not some other function that happens to have the same name; didn't 
check), one problem with the advice is that rand_r is Posix (and 
deprecated, at that) but not ISO C.

> 2) ./fpicker/source/win32/filepicker/comptr.hxx:100:  Unary operator& is
> dangerous.  Do not use it.  [runtime/operator] [4]

Yeah, that one looks scary indeed.

> 3) ./crashrep/source/unx/main.cxx:64:  For a static/global string constant,
> use a C style string instead: "static char g_strProductKey[]".
> [runtime/string]

Looks like a false positive, as

   static string g_strProductKey;

is not used to hold a statically known string constant.

> 4) ./sd/source/ui/remotecontrol/Transmitter.cxx:10:  Streams are highly
> discouraged.  [readability/streams]

Beats me what's wrong with

   #include <iostream>

in general.

> 5) ./sd/source/ui/remotecontrol/mDNSResponder/CommonServices.h:488:  Are you
> taking an address of a cast?  This is dangerous: could be a temp var.  Take
> the address before doing the cast, rather than after  [runtime/casting]

Looks like cpplint is confused here, as

   &( (const struct sockaddr_in *)( SA ) )->sin_addr

clearly needs to cast before taking the adr of pointed-to member.

> 6) ./include/comphelper/sequenceashashmap.hxx:81:  Single-argument
> constructors should be marked explicit.  [runtime/explicit]

There can be no hard-and-fast rule for that.  While some ctors probably 
miss an "explicit," others deliberately are not explicit.

> 7) ./oox/source/helper/binaryoutputstream.cxx:122:  Do not use
> variable-length arrays.  Use an appropriately named ('k' followed by
> CamelCase) compile-time constant for the size.  [runtime/arrays]

While the advice to not use variable-length arrays is generally sound, 
the suggestion is of course nonsense here (though using OUStringBuffer 
or std::vector<sal_Unicode> could arguably be an improvement).

> There are other different types of warnings about headers/include guards but
> would you have some opinion about these first?

Looks like a rather poor signal/noise ratio to me.

Stephan


More information about the LibreOffice mailing list