[PATCH] D58291: [clangd] Include textual diagnostic ID as Diagnostic.code.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 17 02:22:41 PDT 2019

sammccall marked an inline comment as done.
sammccall added a comment.

In D58291#1400569 <https://reviews.llvm.org/D58291#1400569>, @kadircet wrote:

> LG but is this information really useful to users? According to LSP `The diagnostic's code, which might appear in the user interface.`, I think seeing this will be mostly noise for users.

It's a good question, it depends how this is surfaced, and we may want to tweak the behavior or suppress entirely in some cases.
I think at least some are useful:

- clang-tidy check names are things users need to know about (used for configuration)
- for warnings, we quite likely should replace with the most specific warning category (e.g. "unreachable-code-loop-increment"), again these are used for configuration (-W)
- for others, maybe we should at least trim the err_ prefix, or maybe drop them entirely.

Comment at: clangd/Diagnostics.cpp:39
+#include "clang/Basic/DiagnosticCommentKinds.inc"
+#include "clang/Basic/DiagnosticSemaKinds.inc"
+#include "clang/Basic/DiagnosticAnalysisKinds.inc"
kadircet wrote:
> I suppose `CrossTUKinds` is left out intentionally ?
Yeah, this isn't really part of clang, and seems to be part of static analyzer.
Some places include it and others don't...

Comment at: clangd/Diagnostics.cpp:281
+    if (auto* Name = getDiagnosticCode(D.ID))
+      Main.code = Name;
     if (Opts.EmbedFixesInDiagnostics) {
jkorous wrote:
> It seems to me that in case `ID` is undefined (hits the default case in `getDiagnosticCode`) we are calling `std::string` non-explicit constructor with `nullptr` which is UB.
> How about changing `char* getDiagnosticCode` to `Optional<char*> getDiagnosticCode` or similar to make it less error-prone?
This is an if statement - if the pointer is null we never assign to std::string.

  rCTE Clang Tools Extra



More information about the cfe-commits mailing list