[PATCH] D59932: [clang-tidy] **Prototype**: Add fix description to clang-tidy checks.

Alexander Kornienko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 3 10:15:58 PDT 2019


alexfh added a comment.

This looks like a more promising direction. Thanks for the readiness to experiment with this.

See the comments inline.



================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:130
+
+      // If we have alternative fixes (attached via diagnostic::Notes), we just
+      // choose the first one to apply.
----------------
Could you leave a FIXME here to explore options around interactive fix selection?


================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:132
+      // choose the first one to apply.
+      const llvm::StringMap<Replacements> *ErrorFix = nullptr;
+      if (!Error.Message.Fix.empty())
----------------
`ErrorFix` brings more questions than it answers. Maybe `SelectedFix`, `ChosenFix`, or just `Fix`?


================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:133
+      const llvm::StringMap<Replacements> *ErrorFix = nullptr;
+      if (!Error.Message.Fix.empty())
+        ErrorFix = &Error.Message.Fix;
----------------
nit: I'd add braces here, since the `else` branch has them.


================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:144
+
+      if (ApplyFixes && ErrorFix) {
+        for (const auto &FileAndReplacements : *ErrorFix) {
----------------
The nesting level starts getting out of control here. I'd try to pull the loop into a function.


================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:187
       }
+      reportFix(Diag, Error.Message.Fix);
     }
----------------
Why `Error.Message.Fix`? Should this use `*SelectedFix` instead?


================
Comment at: clang-tools-extra/clang-tidy/ClangTidy.cpp:262
+      for (const auto &Repl : FileAndReplacements.second) {
+        if (Repl.isApplicable()) {
+          SmallString<128> FixAbsoluteFilePath = Repl.getFilePath();
----------------
nit: Early "continue" would make sense here.

  if (!Repl.isApplicable())
    continue;
  ...


================
Comment at: clang/include/clang/Tooling/Core/Diagnostic.h:46
+
+  /// Fixes for this diagnostic.
+  llvm::StringMap<Replacements> Fix;
----------------
Some information from the original comment was lost here:

  /// Fixes to apply, grouped by file path.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D59932/new/

https://reviews.llvm.org/D59932





More information about the cfe-commits mailing list