Skip to content

Changes

Started by upstream project gerrit-osmo-trx #487
Started 9 hr 11 min ago
Queued 6 sec
Took 2 min 17 sec on build5-deb12build-ansible
checkpatch.conf: lint more code

The current linter configuration misses to find lots of formatting
errors as we've seen here:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comments/f8f1b5a2_3c7e1389

This is caused by the following exclude rules in .checkpatch.conf, which
were added there to avoid that some of the checkpatch rules don't work
correctly with C++ code:

  ---exclude .*h
  ---exclude Transceiver52M/grgsm_vitac/.*
  ---exclude utils/va-test/.*

Fix this by splitting the .checkpatch.conf into two files,
.checkpatch.c.conf and .checkpatch.c++.conf. Let the C version use the
default rules. Let the C++ version ignore the rules that don't work with
C++ code:

* SPACING
  Fails on:
    std::vector<std::string>
  With:
    ERROR:SPACING: spaces required around that '<' (ctx:VxV)
    ERROR:SPACING: spaces required around that '>' (ctx:VxW)

* FUNCTION_ARGUMENTS
  Fails on:
    ScopedLock lock(mLock);
  With:
    WARNING:FUNCTION_ARGUMENTS: function definition argument 'mLock' should also have an identifier name

* INDENTED_LABEL
  Fails on:
    private:
    protected:
  With:
    WARNING:INDENTED_LABEL: labels should not be indented

* NEW_TYPEDEFS
  Fails on:
    typedef std::map<K,D*> Map;
  With:
    WARNING:NEW_TYPEDEFS: do not add new typedefs

With the new config, the linter only complains about the following
things across the existing C++ code, which seem to be legitimate linting
problems (and if not, can be ignored as well):

  BRACES_NOT_NECESSARY, CODE_INDENT, LEADING_SPACE,
  MULTISTATEMENT_MACRO_USE_DO_WHILE, OPEN_BRACE, POINTER_LOCATION,
  PRINTF_I_OSMO, SINGLE_STATEMENT_DO_WHILE_MACRO, SPACE_BEFORE_TAB,
  STATIC_CONST_CHAR_ARRAY, TABSTOP, TRAILING_WHITESPACE

Depends: osmo-ci Ia2e75d9783382cefc3900a4ab51a5a919a2cbbbc
Change-Id: I0df5b6f2f0bf1469a80a1f5859809c30f523f683
Oliver Smith at