diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy')
| -rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidy.cpp | 5 | ||||
| -rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp | 16 | ||||
| -rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h | 9 |
3 files changed, 24 insertions, 6 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp index 57bfc5e3d5d..65c10f4cfef 100644 --- a/clang-tools-extra/clang-tidy/ClangTidy.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -336,8 +336,9 @@ ClangTidyStats runClangTidy(const ClangTidyOptions &Options, void handleErrors(const std::vector<ClangTidyError> &Errors, bool Fix) { ErrorReporter Reporter(Fix); for (const ClangTidyError &Error : Errors) { - Reporter.reportDiagnostic(Error.Message, DiagnosticsEngine::Warning, - &Error.Fix); + Reporter.reportDiagnostic( + Error.Message, static_cast<DiagnosticsEngine::Level>(Error.DiagLevel), + &Error.Fix); for (const ClangTidyMessage &Note : Error.Notes) Reporter.reportDiagnostic(Note, DiagnosticsEngine::Note); } diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp index a61b8fce029..625f92ae8a0 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -109,7 +109,9 @@ ClangTidyMessage::ClangTidyMessage(StringRef Message, FileOffset = Sources.getFileOffset(Loc); } -ClangTidyError::ClangTidyError(StringRef CheckName) : CheckName(CheckName) {} +ClangTidyError::ClangTidyError(StringRef CheckName, + ClangTidyError::Level DiagLevel) + : CheckName(CheckName), DiagLevel(DiagLevel) {} // Returns true if GlobList starts with the negative indicator ('-'), removes it // from the GlobList. @@ -214,7 +216,8 @@ ClangTidyDiagnosticConsumer::ClangTidyDiagnosticConsumer(ClangTidyContext &Ctx) void ClangTidyDiagnosticConsumer::finalizeLastError() { if (!Errors.empty()) { ClangTidyError &Error = Errors.back(); - if (!Context.getChecksFilter().isCheckEnabled(Error.CheckName)) { + if (!Context.getChecksFilter().isCheckEnabled(Error.CheckName) && + Error.DiagLevel != ClangTidyError::Error) { ++Context.Stats.ErrorsIgnoredCheckFilter; Errors.pop_back(); } else if (!LastErrorRelatesToUserCode) { @@ -246,7 +249,14 @@ void ClangTidyDiagnosticConsumer::HandleDiagnostic( ? ("clang-diagnostic-" + WarningOption).str() : Context.getCheckName(Info.getID()).str(); - Errors.push_back(ClangTidyError(CheckName)); + ClangTidyError::Level Level = ClangTidyError::Warning; + if (DiagLevel == DiagnosticsEngine::Error || + DiagLevel == DiagnosticsEngine::Fatal) { + Level = ClangTidyError::Error; + LastErrorRelatesToUserCode = true; + LastErrorPassesLineFilter = true; + } + Errors.push_back(ClangTidyError(CheckName, Level)); } // FIXME: Provide correct LangOptions for each file. diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h index 1240ab984ed..926a3b43a00 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h +++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h @@ -49,12 +49,19 @@ struct ClangTidyMessage { /// /// FIXME: Make Diagnostics flexible enough to support this directly. struct ClangTidyError { - ClangTidyError(StringRef CheckName); + enum Level { + Warning = DiagnosticsEngine::Warning, + Error = DiagnosticsEngine::Error + }; + + ClangTidyError(StringRef CheckName, Level DiagLevel); std::string CheckName; ClangTidyMessage Message; tooling::Replacements Fix; SmallVector<ClangTidyMessage, 1> Notes; + + Level DiagLevel; }; /// \brief Filters checks by name. |

