Author: alexfh Date: Wed Jan 8 17:30:40 2014 New Revision: 198807 URL: http://llvm.org/viewvc/llvm-project?rev=198807&view=rev Log: Restructured code, no functional changes.
Summary: Moved implementation of classes declared in ClangTidyDiagnosticConsumer.h to ClangTidyDiagnosticConsumer.cpp. Added a FIXME note in ClangTidyDiagnosticConsumer::HandleDiagnostic. Reviewers: klimek, djasper Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2520 Added: clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h Modified: clang-tools-extra/trunk/clang-tidy/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/CMakeLists.txt?rev=198807&r1=198806&r2=198807&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/CMakeLists.txt Wed Jan 8 17:30:40 2014 @@ -5,6 +5,7 @@ set(LLVM_LINK_COMPONENTS add_clang_library(clangTidy ClangTidy.cpp ClangTidyModule.cpp + ClangTidyDiagnosticConsumer.cpp ) target_link_libraries(clangTidy clangAST Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp?rev=198807&r1=198806&r2=198807&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp Wed Jan 8 17:30:40 2014 @@ -174,38 +174,6 @@ bool ChecksFilter::IsCheckEnabled(String return EnableChecks.match(Name) && !DisableChecks.match(Name); } -ClangTidyMessage::ClangTidyMessage(StringRef Message) : Message(Message) {} - -ClangTidyMessage::ClangTidyMessage(StringRef Message, - const SourceManager &Sources, - SourceLocation Loc) - : Message(Message) { - FilePath = Sources.getFilename(Loc); - FileOffset = Sources.getFileOffset(Loc); -} - -ClangTidyError::ClangTidyError(const ClangTidyMessage &Message) - : Message(Message) {} - -DiagnosticBuilder ClangTidyContext::Diag(SourceLocation Loc, - StringRef Message) { - return DiagEngine->Report( - Loc, DiagEngine->getCustomDiagID(DiagnosticsEngine::Warning, Message)); -} - -void ClangTidyContext::setDiagnosticsEngine(DiagnosticsEngine *Engine) { - DiagEngine = Engine; -} - -void ClangTidyContext::setSourceManager(SourceManager *SourceMgr) { - DiagEngine->setSourceManager(SourceMgr); -} - -/// \brief Store a \c ClangTidyError. -void ClangTidyContext::storeError(const ClangTidyError &Error) { - Errors->push_back(Error); -} - void ClangTidyCheck::run(const ast_matchers::MatchFinder::MatchResult &Result) { Context->setSourceManager(Result.SourceManager); check(Result); Added: clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp?rev=198807&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp (added) +++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp Wed Jan 8 17:30:40 2014 @@ -0,0 +1,116 @@ +//===--- tools/extra/clang-tidy/ClangTidy.cpp - Clang-tidy DiagnosticConsumer // +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file This file implements clang-tidy DiagnosticConsumer. +/// +/// This tool uses the Clang Tooling infrastructure, see +/// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html +/// for details on setting it up with LLVM source tree. +/// +//===----------------------------------------------------------------------===// + +#include "ClangTidyDiagnosticConsumer.h" + +#include "llvm/ADT/SmallString.h" + +namespace clang { +namespace tidy { + +ClangTidyMessage::ClangTidyMessage(StringRef Message) : Message(Message) {} + +ClangTidyMessage::ClangTidyMessage(StringRef Message, + const SourceManager &Sources, + SourceLocation Loc) + : Message(Message) { + FilePath = Sources.getFilename(Loc); + FileOffset = Sources.getFileOffset(Loc); +} + +ClangTidyError::ClangTidyError(const ClangTidyMessage &Message) + : Message(Message) {} + +DiagnosticBuilder ClangTidyContext::Diag(SourceLocation Loc, + StringRef Message) { + return DiagEngine->Report( + Loc, DiagEngine->getCustomDiagID(DiagnosticsEngine::Warning, Message)); +} + +void ClangTidyContext::setDiagnosticsEngine(DiagnosticsEngine *Engine) { + DiagEngine = Engine; +} + +void ClangTidyContext::setSourceManager(SourceManager *SourceMgr) { + DiagEngine->setSourceManager(SourceMgr); +} + +/// \brief Store a \c ClangTidyError. +void ClangTidyContext::storeError(const ClangTidyError &Error) { + Errors->push_back(Error); +} + +ClangTidyDiagnosticConsumer::ClangTidyDiagnosticConsumer(ClangTidyContext &Ctx) + : Context(Ctx) { + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions(); + Diags.reset(new DiagnosticsEngine( + IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), &*DiagOpts, this, + /*ShouldOwnClient=*/false)); + Context.setDiagnosticsEngine(Diags.get()); +} + +void ClangTidyDiagnosticConsumer::HandleDiagnostic( + DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) { + // FIXME: Demultiplex diagnostics. + // FIXME: Ensure that we don't get notes from user code related to errors + // from non-user code. + if (Diags->getSourceManager().isInSystemHeader(Info.getLocation())) + return; + if (DiagLevel != DiagnosticsEngine::Note) { + Errors.push_back(ClangTidyError(getMessage(Info))); + } else { + assert(!Errors.empty() && + "A diagnostic note can only be appended to a message."); + Errors.back().Notes.push_back(getMessage(Info)); + } + addFixes(Info, Errors.back()); +} + +// Flushes the internal diagnostics buffer to the ClangTidyContext. +void ClangTidyDiagnosticConsumer::finish() { + for (unsigned i = 0, e = Errors.size(); i != e; ++i) { + Context.storeError(Errors[i]); + } + Errors.clear(); +} + +void ClangTidyDiagnosticConsumer::addFixes(const Diagnostic &Info, + ClangTidyError &Error) { + if (!Info.hasSourceManager()) + return; + SourceManager &SourceMgr = Info.getSourceManager(); + tooling::Replacements Replacements; + for (unsigned i = 0, e = Info.getNumFixItHints(); i != e; ++i) { + Error.Fix.insert(tooling::Replacement( + SourceMgr, Info.getFixItHint(i).RemoveRange.getBegin(), 0, + Info.getFixItHint(i).CodeToInsert)); + } +} + +ClangTidyMessage +ClangTidyDiagnosticConsumer::getMessage(const Diagnostic &Info) const { + SmallString<100> Buf; + Info.FormatDiagnostic(Buf); + if (!Info.hasSourceManager()) { + return ClangTidyMessage(Buf.str()); + } + return ClangTidyMessage(Buf.str(), Info.getSourceManager(), + Info.getLocation()); +} + +} // namespace tidy +} // namespace clang Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h?rev=198807&r1=198806&r2=198807&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h Wed Jan 8 17:30:40 2014 @@ -13,7 +13,6 @@ #include "clang/Basic/Diagnostic.h" #include "clang/Basic/SourceManager.h" #include "clang/Tooling/Refactoring.h" -#include "llvm/ADT/SmallString.h" namespace clang { @@ -103,63 +102,20 @@ private: // implementation file. class ClangTidyDiagnosticConsumer : public DiagnosticConsumer { public: - ClangTidyDiagnosticConsumer(ClangTidyContext &Ctx) : Context(Ctx) { - IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions(); - Diags.reset(new DiagnosticsEngine( - IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), &*DiagOpts, this, - /*ShouldOwnClient=*/false)); - Context.setDiagnosticsEngine(Diags.get()); - } + ClangTidyDiagnosticConsumer(ClangTidyContext &Ctx); // FIXME: The concept of converting between FixItHints and Replacements is // more generic and should be pulled out into a more useful Diagnostics // library. virtual void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, - const Diagnostic &Info) LLVM_OVERRIDE { - // FIXME: Ensure that we don't get notes from user code related to errors - // from non-user code. - if (Diags->getSourceManager().isInSystemHeader(Info.getLocation())) - return; - if (DiagLevel != DiagnosticsEngine::Note) { - Errors.push_back(ClangTidyError(getMessage(Info))); - } else { - assert(!Errors.empty() && - "A diagnostic note can only be appended to a message."); - Errors.back().Notes.push_back(getMessage(Info)); - } - addFixes(Info, Errors.back()); - } + const Diagnostic &Info) LLVM_OVERRIDE; // Flushes the internal diagnostics buffer to the ClangTidyContext. - virtual void finish() LLVM_OVERRIDE { - for (unsigned i = 0, e = Errors.size(); i != e; ++i) { - Context.storeError(Errors[i]); - } - Errors.clear(); - } + virtual void finish() LLVM_OVERRIDE; private: - void addFixes(const Diagnostic &Info, ClangTidyError &Error) { - if (!Info.hasSourceManager()) - return; - SourceManager &SourceMgr = Info.getSourceManager(); - tooling::Replacements Replacements; - for (unsigned i = 0, e = Info.getNumFixItHints(); i != e; ++i) { - Error.Fix.insert(tooling::Replacement( - SourceMgr, Info.getFixItHint(i).RemoveRange.getBegin(), 0, - Info.getFixItHint(i).CodeToInsert)); - } - } - - ClangTidyMessage getMessage(const Diagnostic &Info) const { - SmallString<100> Buf; - Info.FormatDiagnostic(Buf); - if (!Info.hasSourceManager()) { - return ClangTidyMessage(Buf.str()); - } - return ClangTidyMessage(Buf.str(), Info.getSourceManager(), - Info.getLocation()); - } + void addFixes(const Diagnostic &Info, ClangTidyError &Error); + ClangTidyMessage getMessage(const Diagnostic &Info) const; ClangTidyContext &Context; OwningPtr<DiagnosticsEngine> Diags; _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
