[PATCH] D26137: [clang-tidy] Add check name to YAML export
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 7 11:53:00 PST 2016
alexfh requested changes to this revision.
alexfh added a comment.
This revision now requires changes to proceed.
Thank you for resurrecting this patch! A few comments inline.
================
Comment at: include/clang/Tooling/Core/Diagnostic.h:35
+ DiagnosticMessage(llvm::StringRef Message, const SourceManager &Sources,
+ SourceLocation Loc);
+ std::string Message;
----------------
What are the constraints on the location? Should it be a file location or macro locations are fine too? Please add a (doxygen-style) comment.
================
Comment at: include/clang/Tooling/Core/Diagnostic.h:57
+
+ std::string CheckName;
+ DiagnosticMessage Message;
----------------
`CheckName` is somewhat clang-tidy specific. We need something more generic here, e.g. `DiagnosticName`, `Category` or somesuch.
Please add a (doxygen-style) comment to this and other fields here.
================
Comment at: include/clang/Tooling/Core/Diagnostic.h:68-71
+ /// A freeform chunk of text to describe the context of the replacements.
+ /// Will be printed, for example, when detecting conflicts during replacement
+ /// deduplication.
+ std::string Context;
----------------
That's too vague. Are you intending to use it only for reporting problems with replacement deduplication? Should it be in this structure at all?
================
Comment at: include/clang/Tooling/DiagnosticsYaml.h:82
+ }
+ }
+ Io.mapRequired("Diagnostics", Diagnostics);
----------------
nit: Formatting is off.
================
Comment at: tools/extra/clang-tidy/ClangTidy.cpp:578
raw_ostream &OS) {
- TranslationUnitReplacements TUR;
- for (const ClangTidyError &Error : Errors) {
- for (const auto &FileAndFixes : Error.Fix)
- TUR.Replacements.insert(TUR.Replacements.end(),
- FileAndFixes.second.begin(),
- FileAndFixes.second.end());
- }
-
+ TranslationUnitDiagnostics TUD;
+ TUD.Diagnostics.insert(TUD.Diagnostics.end(), Errors.begin(), Errors.end());
----------------
This function neither fills `TUD.MainSourceFile` nor `TUD.Context` (which I'm not sure even belongs to this structure).
================
Comment at: tools/extra/clang-tidy/ClangTidy.cpp:579
+ TranslationUnitDiagnostics TUD;
+ TUD.Diagnostics.insert(TUD.Diagnostics.end(), Errors.begin(), Errors.end());
yaml::Output YAML(OS);
----------------
I somewhat dislike the implicit object slicing that happens here. I'd prefer to make this a loop with explicit conversion.
================
Comment at: tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp:116
+ bool IsWarningAsError, StringRef BuildDirectory)
+ : clang::tooling::Diagnostic(CheckName, DiagLevel),
+ BuildDirectory(BuildDirectory), IsWarningAsError(IsWarningAsError) {}
----------------
No need for `clang::` here.
Repository:
rL LLVM
https://reviews.llvm.org/D26137
More information about the cfe-commits
mailing list