PiotrZSL added inline comments.

================
Comment at: 
clang-tools-extra/clang-tidy/portability/NonPortableIntegerConstantCheck.cpp:92
+void NonPortableIntegerConstantCheck::registerMatchers(MatchFinder *Finder) {
+  Finder->addMatcher(integerLiteral().bind("integer"), this);
+}
----------------
consider excluding system headers, or even exclude things like "equals(0)" to 
speed up  check.


================
Comment at: 
clang-tools-extra/clang-tidy/portability/NonPortableIntegerConstantCheck.cpp:103
+  QualType IntegerLiteralType = MatchedInt->getType();
+  auto LiteralBitWidth = Result.Context->getTypeSize( IntegerLiteralType );
+
----------------
use type instead of auto


================
Comment at: 
clang-tools-extra/clang-tidy/portability/NonPortableIntegerConstantCheck.cpp:146
+    diag(MatchedInt->getBeginLoc(),
+         "non-portable integer literal: hardcoded platform-specific maximum 
value");
+  } else if (IsMin && !RepresentsZero) {
----------------
add here some hint to developer what to do, in cpp suggest using 
std::numeric_limits, in C some other MAX macro.
Same for other.


================
Comment at: 
clang-tools-extra/clang-tidy/portability/NonPortableIntegerConstantCheck.h:20
+/// 
http://clang.llvm.org/extra/clang-tidy/checks/portability/non-portable-integer-constant.html
+class NonPortableIntegerConstantCheck : public ClangTidyCheck {
+public:
----------------
this check is already in portability group, no need to duplicate "portable".
Maybe just portability-integer-constant


================
Comment at: 
clang-tools-extra/docs/clang-tidy/checks/portability/non-portable-integer-constant.rst:22
+      return x ^ 0xFFFFFFFF;
+      // The right way to write this would be ULONG_MAX, or -1.
+    }
----------------
well, not, right way would be using std::numeric_limits<std::uint32_t>::max().
And unsigned long can be 4 bytes or 8 bytes or anything compiler decide.
So this example got more issues., and 0XFFF.. is a last of them, and -1 is not 
valid in such case.


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/portability/non-portable-integer-constant.cpp:1
+// RUN: %check_clang_tidy %s -std=c++17-or-later 
portability-non-portable-integer-constant %t
+
----------------
no need to limit this check to c++17 or later.
when it's targeting all versions of C and C++


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/portability/non-portable-integer-constant.cpp:229
+  FULL_LITERAL;
+  // --CHECK-MESSAGES: :[[@LINE-1]]:3: warning: non-portable integer literal
+  // --CHECK-MESSAGES: :[[@LINE-3]]:22: note: expanded from macro
----------------
exclude system macros, otherwise it may warn for things like ULONG_MAX


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D146712

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

Reply via email to