summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-tidy')
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidy.cpp5
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp16
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h9
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.
OpenPOWER on IntegriCloud