Author: alexfh Date: Wed Sep 16 09:36:22 2015 New Revision: 247803 URL: http://llvm.org/viewvc/llvm-project?rev=247803&view=rev Log: [clang-tidy] Make google-runtime-int configurable.
Added: clang-tools-extra/trunk/test/clang-tidy/google-runtime-int-std.cpp Modified: clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.cpp clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.h Modified: clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.cpp?rev=247803&r1=247802&r2=247803&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.cpp Wed Sep 16 09:36:22 2015 @@ -21,6 +21,18 @@ namespace runtime { using namespace ast_matchers; +IntegerTypesCheck::IntegerTypesCheck(StringRef Name, ClangTidyContext *Context) + : ClangTidyCheck(Name, Context), + UnsignedTypePrefix(Options.get("UnsignedTypePrefix", "uint")), + SignedTypePrefix(Options.get("SignedTypePrefix", "int")), + TypeSuffix(Options.get("TypeSuffix", "")) {} + +void IntegerTypesCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { + Options.store(Opts, "UnsignedTypePrefix", UnsignedTypePrefix); + Options.store(Opts, "SignedTypePrefix", SignedTypePrefix); + Options.store(Opts, "TypeSuffix", TypeSuffix); +} + void IntegerTypesCheck::registerMatchers(MatchFinder *Finder) { // Find all TypeLocs. The relevant Style Guide rule only applies to C++. if (getLangOpts().CPlusPlus) @@ -86,7 +98,8 @@ void IntegerTypesCheck::check(const Matc std::string Replacement = ((IsSigned ? SignedTypePrefix : UnsignedTypePrefix) + Twine(Width) + - (AddUnderscoreT ? "_t" : "")).str(); + TypeSuffix) + .str(); // We don't add a fix-it as changing the type can easily break code, // e.g. when a function requires a 'long' argument on all platforms. Modified: clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.h?rev=247803&r1=247802&r2=247803&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/google/IntegerTypesCheck.h Wed Sep 16 09:36:22 2015 @@ -23,16 +23,15 @@ namespace runtime { /// Correspondig cpplint.py check: 'runtime/int'. class IntegerTypesCheck : public ClangTidyCheck { public: - IntegerTypesCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context), UnsignedTypePrefix("uint"), - SignedTypePrefix("int"), AddUnderscoreT(false) {} + IntegerTypesCheck(StringRef Name, ClangTidyContext *Context); void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + void storeOptions(ClangTidyOptions::OptionMap &Options) override; private: - const StringRef UnsignedTypePrefix; - const StringRef SignedTypePrefix; - const bool AddUnderscoreT; + const std::string UnsignedTypePrefix; + const std::string SignedTypePrefix; + const std::string TypeSuffix; }; } // namespace runtime Added: clang-tools-extra/trunk/test/clang-tidy/google-runtime-int-std.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/google-runtime-int-std.cpp?rev=247803&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/google-runtime-int-std.cpp (added) +++ clang-tools-extra/trunk/test/clang-tidy/google-runtime-int-std.cpp Wed Sep 16 09:36:22 2015 @@ -0,0 +1,57 @@ +// RUN: %python %S/check_clang_tidy.py %s google-runtime-int %t \ +// RUN: -config='{CheckOptions: [ \ +// RUN: {key: google-runtime-int.UnsignedTypePrefix, value: "std::uint"}, \ +// RUN: {key: google-runtime-int.SignedTypePrefix, value: "std::int"}, \ +// RUN: {key: google-runtime-int.TypeSuffix, value: "_t"}, \ +// RUN: ]}' -- -std=c++11 + +long a(); +// CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'std::int{{..}}_t' + +typedef unsigned long long uint64; // NOLINT + +long b(long = 1); +// CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'std::int{{..}}_t' +// CHECK-MESSAGES: [[@LINE-2]]:8: warning: consider replacing 'long' with 'std::int{{..}}_t' + +template <typename T> +void tmpl() { + T i; +} + +short bar(const short, unsigned short) { +// CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'short' with 'std::int16_t' +// CHECK-MESSAGES: [[@LINE-2]]:17: warning: consider replacing 'short' with 'std::int16_t' +// CHECK-MESSAGES: [[@LINE-3]]:24: warning: consider replacing 'unsigned short' with 'std::uint16_t' + long double foo = 42; + uint64 qux = 42; + unsigned short port; + + const unsigned short bar = 0; +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'std::uint16_t' + long long *baar; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'std::int64_t' + const unsigned short &bara = bar; +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'std::uint16_t' + long const long moo = 1; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'std::int64_t' + long volatile long wat = 42; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'std::int64_t' + unsigned long y; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long' with 'std::uint{{..}}_t' + unsigned long long **const *tmp; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'std::uint64_t' + unsigned long long **const *&z = tmp; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'std::uint64_t' + unsigned short porthole; +// CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned short' with 'std::uint16_t' + + uint64 cast = (short)42; +// CHECK-MESSAGES: [[@LINE-1]]:18: warning: consider replacing 'short' with 'std::int16_t' + +#define l long + l x; + + tmpl<short>(); +// CHECK-MESSAGES: [[@LINE-1]]:8: warning: consider replacing 'short' with 'std::int16_t' +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits