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