Hi James,
I’d like to propose that we update our style to require that the
“override” keyword always be used when overriding virtual functions
(including destructors). The proposed text is below. I’ll also
prepare
a clang-tidy patch to update stout, libprocess and mesos globally.
+1!
Thanks for bringing this up and offering to do the clean-up. Using
`override`
consistently would really give us some certainty as interface methods
evolve.
* * *
Note that since our style guide _is_ the Google style guide plus some
additions, we shouldn't need to update anything in our style guide;
the
Google
style guide seems to have started requiring this from February this
year
and
our code base just got out of sync.
I believe we should activate the matching warning in our `cpplint`
setup,
--- a/support/mesos-style.py
+++ b/support/mesos-style.py
@@ -256,6 +256,7 @@ class CppLinter(LinterBase):
'build/endif_comment',
'build/nullptr',
'readability/todo',
+ 'readability/inheritance',
'readability/namespace',
'runtime/vlog',
'whitespace/blank_line',
While e.g., `clang` already emits a diagnostic for hidden `virtual`
functions
we might still want to update our `clang-tidy` setup. There is a
dedicated
linter for `override` which me might not need due to the default
diagnostic,
--- a/support/clang-tidy
+++ b/support/clang-tidy
@@ -25,6 +25,7 @@ google-*,\
mesos-*,\
\
misc-use-after-move,\
+modernize-use-override,\
\
readability-redundant-string-cstr\
"
but it probably makes a lot of sense to check what other compile-time
Mesos
features can be enabled by default in our `clang-tidy` setup (either
in
Jenkins
via `CMAKE_ARGS`, or even better globally by default in
`support/mesos-tidy/entrypoint.sh:31ff`).
I would guess that using `cpplint` to verifying automated fixes made
with
`clang-tidy` could inform what flags should have been added (there
are some
missing features in the cmake build though, e.g., some isolators
which
would
have benefited from `override` recently).
Cheers,
Benjamin