[clang-tidy] Fix treating non-space whitespaces in checks list.
Summary: This furtherly improves r295303: [clang-tidy] Ignore spaces between globs in the Checks option. Trims all whitespaces and not only spaces and correctly computes the offset of the checks list (taking the size before trimming). Reviewers: alexfh Reviewed By: alexfh Subscribers: cfe-commits, JDevlieghere Differential Revision: https://reviews.llvm.org/D30567 llvm-svn: 298621
This commit is contained in:
parent
4e7b71bc86
commit
92ecb51fae
File diff suppressed because it is too large
Load Diff
|
@ -1,87 +1,94 @@
|
||||||
#include "ClangTidy.h"
|
#include "ClangTidy.h"
|
||||||
#include "ClangTidyTest.h"
|
#include "ClangTidyTest.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
namespace clang {
|
namespace clang {
|
||||||
namespace tidy {
|
namespace tidy {
|
||||||
namespace test {
|
namespace test {
|
||||||
|
|
||||||
class TestCheck : public ClangTidyCheck {
|
class TestCheck : public ClangTidyCheck {
|
||||||
public:
|
public:
|
||||||
TestCheck(StringRef Name, ClangTidyContext *Context)
|
TestCheck(StringRef Name, ClangTidyContext *Context)
|
||||||
: ClangTidyCheck(Name, Context) {}
|
: ClangTidyCheck(Name, Context) {}
|
||||||
void registerMatchers(ast_matchers::MatchFinder *Finder) override {
|
void registerMatchers(ast_matchers::MatchFinder *Finder) override {
|
||||||
Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
|
Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
|
||||||
}
|
}
|
||||||
void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
|
void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
|
||||||
const auto *Var = Result.Nodes.getNodeAs<VarDecl>("var");
|
const auto *Var = Result.Nodes.getNodeAs<VarDecl>("var");
|
||||||
// Add diagnostics in the wrong order.
|
// Add diagnostics in the wrong order.
|
||||||
diag(Var->getLocation(), "variable");
|
diag(Var->getLocation(), "variable");
|
||||||
diag(Var->getTypeSpecStartLoc(), "type specifier");
|
diag(Var->getTypeSpecStartLoc(), "type specifier");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST(ClangTidyDiagnosticConsumer, SortsErrors) {
|
TEST(ClangTidyDiagnosticConsumer, SortsErrors) {
|
||||||
std::vector<ClangTidyError> Errors;
|
std::vector<ClangTidyError> Errors;
|
||||||
runCheckOnCode<TestCheck>("int a;", &Errors);
|
runCheckOnCode<TestCheck>("int a;", &Errors);
|
||||||
EXPECT_EQ(2ul, Errors.size());
|
EXPECT_EQ(2ul, Errors.size());
|
||||||
EXPECT_EQ("type specifier", Errors[0].Message.Message);
|
EXPECT_EQ("type specifier", Errors[0].Message.Message);
|
||||||
EXPECT_EQ("variable", Errors[1].Message.Message);
|
EXPECT_EQ("variable", Errors[1].Message.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GlobList, Empty) {
|
TEST(GlobList, Empty) {
|
||||||
GlobList Filter("");
|
GlobList Filter("");
|
||||||
|
|
||||||
EXPECT_TRUE(Filter.contains(""));
|
EXPECT_TRUE(Filter.contains(""));
|
||||||
EXPECT_FALSE(Filter.contains("aaa"));
|
EXPECT_FALSE(Filter.contains("aaa"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GlobList, Nothing) {
|
TEST(GlobList, Nothing) {
|
||||||
GlobList Filter("-*");
|
GlobList Filter("-*");
|
||||||
|
|
||||||
EXPECT_FALSE(Filter.contains(""));
|
EXPECT_FALSE(Filter.contains(""));
|
||||||
EXPECT_FALSE(Filter.contains("a"));
|
EXPECT_FALSE(Filter.contains("a"));
|
||||||
EXPECT_FALSE(Filter.contains("-*"));
|
EXPECT_FALSE(Filter.contains("-*"));
|
||||||
EXPECT_FALSE(Filter.contains("-"));
|
EXPECT_FALSE(Filter.contains("-"));
|
||||||
EXPECT_FALSE(Filter.contains("*"));
|
EXPECT_FALSE(Filter.contains("*"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GlobList, Everything) {
|
TEST(GlobList, Everything) {
|
||||||
GlobList Filter("*");
|
GlobList Filter("*");
|
||||||
|
|
||||||
EXPECT_TRUE(Filter.contains(""));
|
EXPECT_TRUE(Filter.contains(""));
|
||||||
EXPECT_TRUE(Filter.contains("aaaa"));
|
EXPECT_TRUE(Filter.contains("aaaa"));
|
||||||
EXPECT_TRUE(Filter.contains("-*"));
|
EXPECT_TRUE(Filter.contains("-*"));
|
||||||
EXPECT_TRUE(Filter.contains("-"));
|
EXPECT_TRUE(Filter.contains("-"));
|
||||||
EXPECT_TRUE(Filter.contains("*"));
|
EXPECT_TRUE(Filter.contains("*"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GlobList, Simple) {
|
TEST(GlobList, Simple) {
|
||||||
GlobList Filter("aaa");
|
GlobList Filter("aaa");
|
||||||
|
|
||||||
EXPECT_TRUE(Filter.contains("aaa"));
|
EXPECT_TRUE(Filter.contains("aaa"));
|
||||||
EXPECT_FALSE(Filter.contains(""));
|
EXPECT_FALSE(Filter.contains(""));
|
||||||
EXPECT_FALSE(Filter.contains("aa"));
|
EXPECT_FALSE(Filter.contains("aa"));
|
||||||
EXPECT_FALSE(Filter.contains("aaaa"));
|
EXPECT_FALSE(Filter.contains("aaaa"));
|
||||||
EXPECT_FALSE(Filter.contains("bbb"));
|
EXPECT_FALSE(Filter.contains("bbb"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GlobList, Complex) {
|
TEST(GlobList, WhitespacesAtBegin) {
|
||||||
GlobList Filter("*,-a.*, -b.*, a.1.* ,-a.1.A.*,-..,-...,-..+,-*$, -*qwe* ");
|
GlobList Filter("-*, a.b.*");
|
||||||
|
|
||||||
EXPECT_TRUE(Filter.contains("aaa"));
|
EXPECT_TRUE(Filter.contains("a.b.c"));
|
||||||
EXPECT_TRUE(Filter.contains("qqq"));
|
EXPECT_FALSE(Filter.contains("b.c"));
|
||||||
EXPECT_FALSE(Filter.contains("a."));
|
}
|
||||||
EXPECT_FALSE(Filter.contains("a.b"));
|
|
||||||
EXPECT_FALSE(Filter.contains("b."));
|
TEST(GlobList, Complex) {
|
||||||
EXPECT_FALSE(Filter.contains("b.b"));
|
GlobList Filter("*,-a.*, -b.*, a.1.* ,-a.1.A.*,-..,-...,-..+,-*$, -*qwe* ");
|
||||||
EXPECT_TRUE(Filter.contains("a.1.b"));
|
|
||||||
EXPECT_FALSE(Filter.contains("a.1.A.a"));
|
EXPECT_TRUE(Filter.contains("aaa"));
|
||||||
EXPECT_FALSE(Filter.contains("qwe"));
|
EXPECT_TRUE(Filter.contains("qqq"));
|
||||||
EXPECT_FALSE(Filter.contains("asdfqweasdf"));
|
EXPECT_FALSE(Filter.contains("a."));
|
||||||
EXPECT_TRUE(Filter.contains("asdfqwEasdf"));
|
EXPECT_FALSE(Filter.contains("a.b"));
|
||||||
}
|
EXPECT_FALSE(Filter.contains("b."));
|
||||||
|
EXPECT_FALSE(Filter.contains("b.b"));
|
||||||
} // namespace test
|
EXPECT_TRUE(Filter.contains("a.1.b"));
|
||||||
} // namespace tidy
|
EXPECT_FALSE(Filter.contains("a.1.A.a"));
|
||||||
} // namespace clang
|
EXPECT_FALSE(Filter.contains("qwe"));
|
||||||
|
EXPECT_FALSE(Filter.contains("asdfqweasdf"));
|
||||||
|
EXPECT_TRUE(Filter.contains("asdfqwEasdf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace test
|
||||||
|
} // namespace tidy
|
||||||
|
} // namespace clang
|
||||||
|
|
Loading…
Reference in New Issue