Add support for `NOLINTBEGIN` ... `NOLINTEND` comments
Add support for NOLINTBEGIN ... NOLINTEND comments to suppress clang-tidy warnings over multiple lines. All lines between the "begin" and "end" markers are suppressed. Example: // NOLINTBEGIN(some-check) <Code with warnings to be suppressed, line 1> <Code with warnings to be suppressed, line 2> <Code with warnings to be suppressed, line 3> // NOLINTEND(some-check) Follows similar syntax as the NOLINT and NOLINTNEXTLINE comments that are already implemented, i.e. allows multiple checks to be provided in parentheses; suppresses all checks if the parentheses are omitted, etc. If the comments are misused, e.g. using a NOLINTBEGIN but not terminating it with a NOLINTEND, a clang-tidy-nolint diagnostic message pointing to the misuse is generated. As part of implementing this feature, the following bugs were fixed in existing code: IsNOLINTFound(): IsNOLINTFound("NOLINT", Str) returns true when Str is "NOLINTNEXTLINE". This is because the textual search finds NOLINT as the stem of NOLINTNEXTLINE. LineIsMarkedWithNOLINT(): NOLINTNEXTLINEs on the very first line of a file are ignored. This is due to rsplit('\n\').second returning a blank string when there are no more newline chars to split on.
Loading
Please sign in to comment