JonasToth added a comment.

Hi vmiklos,

thank you for working on this patch!
I added a few comments.



================
Comment at: clang-tidy/readability/ReadabilityTidyModule.cpp:83
         "readability-misplaced-array-index");
+    CheckFactories.registerCheck<RedundantPpCheck>("readability-redundant-pp");
     CheckFactories.registerCheck<RedundantFunctionPtrDereferenceCheck>(
----------------
I think that name is not very descriptive for the user of clang-tidy. `pp` 
should be `preprocessor` or some other constellation that makes it very clear 
its about the preprocessor.


================
Comment at: clang-tidy/readability/RedundantPpCheck.cpp:28
+
+  void Ifdef(clang::SourceLocation aLoc, const clang::Token &rMacroNameTok,
+             const clang::MacroDefinition &rMacroDefinition) override;
----------------
you are in namespace `clang`, you can ellide `clang::`


================
Comment at: clang-tidy/readability/RedundantPpCheck.cpp:37
+  Preprocessor &PP;
+  std::vector<Entry> IfdefStack;
+  std::vector<Entry> IfndefStack;
----------------
Maybe `SmallVector<Entry, 4>`? Would be better for performance.


================
Comment at: clang-tidy/readability/RedundantPpCheck.cpp:48
+
+RedundantPPCallbacks::RedundantPPCallbacks(ClangTidyCheck &Check,
+                                           Preprocessor &PP)
----------------
I think it would be better to have these methods defined inline, as the 
splitting does not achieve its original goal (declaration in header, definition 
in impl).


================
Comment at: clang-tidy/readability/RedundantPpCheck.cpp:52
+
+void RedundantPPCallbacks::Ifdef(
+    clang::SourceLocation Loc, const clang::Token &MacroNameTok,
----------------
The two functions are copied, please remove this duplicatoin and refactor it to 
a general parametrized function.


================
Comment at: docs/ReleaseNotes.rst:70
 
+- New :doc:`readability-redundant-pp
+  <clang-tidy/checks/readability-redundant-pp>` check.
----------------
Please order the checks alphabetically in the release notes, and one empty line 
at the end is enough.


================
Comment at: docs/clang-tidy/checks/readability-redundant-pp.rst:8
+
+* `#ifdef` .. `#endif` pairs which are nested inside an outer pair with the
+  same condition.
----------------
This needs more explanation, please add `.. code-block:: c++` sections for the 
cases that demonstrate the issue.


================
Comment at: test/clang-tidy/readability-redundant-pp-ifdef.cpp:6
+// CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant ifdef; consider 
removing it [readability-redundant-pp]
+#ifdef FOO
+// CHECK-NOTES: [[@LINE-3]]:2: note: previous ifdef was here
----------------
Please add a test where the redundancy comes from including other headers. If 
the headers are nested this case might still occur, but its not safe to 
diagnose/remove these checks as other include-places might not have the same 
constellation.

`ifdef` and `ifndef` are used for the include-guards and therefore particularly 
necessary to test.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D54349



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to