gecko-dev/tools/lint/cpp-virtual-final.yml
Chris Peterson c6373306f8 Bug 1436263 - Part 5: Add a mach lint for virtual function declarations with multiple specifiers. r=froydnj r=ahal
Virtual function declarations should specify only one of `virtual`, `final`, or `override`, as per the Mozilla C++ style guide:

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style

This lint warns about:

  virtual void Bad1() final
  void Bad2() final override
  void Bad3() override final

Caveats: This lint doesn't warn about `virtual void NotBad() override` at this time because there are 8000+ instances. It also doesn't warn about function declarations that span multiple lines because the regex can't match across line breaks.

MozReview-Commit-ID: LcBsOAKKgz7

--HG--
extra : rebase_source : 4da72ffac59acdc9796e3f540f24bb97af989cd0
2018-02-15 00:50:02 -08:00

32 lines
1.0 KiB
YAML

---
cpp-virtual-final:
description: "Virtual function declarations should specify only one of
`virtual`, `final`, or `override`"
level: warning
include: ['.']
exclude:
# Third-party code with cpp-virtual-final warnings:
- gfx/angle
- gfx/skia
- media/webrtc/trunk
- security/sandbox/chromium
extensions: ['cpp', 'h', 'mm']
type: regex
#
# This lint warns about:
#
# virtual void Bad1() final
# void Bad2() final override
# void Bad3() override final
#
# Caveats: This lint ...
#
# * Doesn't warn about `virtual void NotBad() override` at this time
# because there are 8000+ instances.
#
# * Doesn't warn about function declarations that span multiple lines
# because the regex can't match across line breaks.
#
# virtual ) final | final override | override final
payload: ^ *virtual .+\).+\bfinal\b|\bfinal +override\b|\boverride +final\b