summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests
diff options
context:
space:
mode:
authorHaojian Wu <hokein@google.com>2019-01-22 09:39:05 +0000
committerHaojian Wu <hokein@google.com>2019-01-22 09:39:05 +0000
commit1ca0c58c8152ecfb2a47f91080b64eae7710dadb (patch)
treecf967fe3f5caa6c4745dbf4a404a55b015d85cc5 /clang-tools-extra/unittests
parentbd374b27cc33567b0a0522ee511fc1ea9f0bb1df (diff)
downloadbcm5719-llvm-1ca0c58c8152ecfb2a47f91080b64eae7710dadb.tar.gz
bcm5719-llvm-1ca0c58c8152ecfb2a47f91080b64eae7710dadb.zip
[clangd] Support clang-tidy configuration in clangd.
Summary: This patch adds some basic supports for clang-tidy configurations in clangd: - clangd will respect .clang-tidy configurations for each file - we don't aim to support all clang-tidy options in clangd, only a small subset of condfigurations (options related to which checks will be enabled) are supported. - add a `clang-tidy-checks` CLI option that can override options from .clang-tidy file Reviewers: ilya-biryukov, sammccall Reviewed By: sammccall Subscribers: javed.absar, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits Differential Revision: https://reviews.llvm.org/D55256 llvm-svn: 351792
Diffstat (limited to 'clang-tools-extra/unittests')
-rw-r--r--clang-tools-extra/unittests/clangd/ClangdUnitTests.cpp3
-rw-r--r--clang-tools-extra/unittests/clangd/FileIndexTests.cpp3
-rw-r--r--clang-tools-extra/unittests/clangd/TUSchedulerTests.cpp3
-rw-r--r--clang-tools-extra/unittests/clangd/TestTU.cpp2
-rw-r--r--clang-tools-extra/unittests/clangd/TestTU.h2
5 files changed, 11 insertions, 2 deletions
diff --git a/clang-tools-extra/unittests/clangd/ClangdUnitTests.cpp b/clang-tools-extra/unittests/clangd/ClangdUnitTests.cpp
index 041540784a6..b5e83a080f0 100644
--- a/clang-tools-extra/unittests/clangd/ClangdUnitTests.cpp
+++ b/clang-tools-extra/unittests/clangd/ClangdUnitTests.cpp
@@ -141,6 +141,9 @@ TEST(DiagnosticsTest, ClangTidy) {
)cpp");
auto TU = TestTU::withCode(Test.code());
TU.HeaderFilename = "assert.h"; // Suppress "not found" error.
+ TU.ClangTidyChecks =
+ "-*, bugprone-sizeof-expression, bugprone-macro-repeated-side-effects, "
+ "modernize-deprecated-headers";
EXPECT_THAT(
TU.build().getDiagnostics(),
UnorderedElementsAre(
diff --git a/clang-tools-extra/unittests/clangd/FileIndexTests.cpp b/clang-tools-extra/unittests/clangd/FileIndexTests.cpp
index f471e10894b..b0c21c0d060 100644
--- a/clang-tools-extra/unittests/clangd/FileIndexTests.cpp
+++ b/clang-tools-extra/unittests/clangd/FileIndexTests.cpp
@@ -363,7 +363,8 @@ TEST(FileIndexTest, ReferencesInMainFileWithPreamble) {
auto AST =
ParsedAST::build(createInvocationFromCommandLine(Cmd), PreambleData,
llvm::MemoryBuffer::getMemBufferCopy(Main.code()),
- std::make_shared<PCHContainerOperations>(), PI.FS);
+ std::make_shared<PCHContainerOperations>(), PI.FS,
+ tidy::ClangTidyOptions::getDefaults());
ASSERT_TRUE(AST);
FileIndex Index;
Index.updateMain(MainFile, *AST);
diff --git a/clang-tools-extra/unittests/clangd/TUSchedulerTests.cpp b/clang-tools-extra/unittests/clangd/TUSchedulerTests.cpp
index 261c9b549b9..79ee779da62 100644
--- a/clang-tools-extra/unittests/clangd/TUSchedulerTests.cpp
+++ b/clang-tools-extra/unittests/clangd/TUSchedulerTests.cpp
@@ -38,7 +38,8 @@ class TUSchedulerTests : public ::testing::Test {
protected:
ParseInputs getInputs(PathRef File, std::string Contents) {
return ParseInputs{*CDB.getCompileCommand(File),
- buildTestFS(Files, Timestamps), std::move(Contents)};
+ buildTestFS(Files, Timestamps), std::move(Contents),
+ tidy::ClangTidyOptions::getDefaults()};
}
void updateWithCallback(TUScheduler &S, PathRef File,
diff --git a/clang-tools-extra/unittests/clangd/TestTU.cpp b/clang-tools-extra/unittests/clangd/TestTU.cpp
index 740c492297f..067d3f3f1d3 100644
--- a/clang-tools-extra/unittests/clangd/TestTU.cpp
+++ b/clang-tools-extra/unittests/clangd/TestTU.cpp
@@ -35,6 +35,8 @@ ParsedAST TestTU::build() const {
Inputs.CompileCommand.Directory = testRoot();
Inputs.Contents = Code;
Inputs.FS = buildTestFS({{FullFilename, Code}, {FullHeaderName, HeaderCode}});
+ Inputs.ClangTidyOpts = tidy::ClangTidyOptions::getDefaults();
+ Inputs.ClangTidyOpts.Checks = ClangTidyChecks;
auto PCHs = std::make_shared<PCHContainerOperations>();
auto CI = buildCompilerInvocation(Inputs);
assert(CI && "Failed to build compilation invocation.");
diff --git a/clang-tools-extra/unittests/clangd/TestTU.h b/clang-tools-extra/unittests/clangd/TestTU.h
index 26b48b32e15..7b84e4b5abf 100644
--- a/clang-tools-extra/unittests/clangd/TestTU.h
+++ b/clang-tools-extra/unittests/clangd/TestTU.h
@@ -48,6 +48,8 @@ struct TestTU {
// Extra arguments for the compiler invocation.
std::vector<const char *> ExtraArgs;
+ llvm::Optional<std::string> ClangTidyChecks;
+
ParsedAST build() const;
SymbolSlab headerSymbols() const;
std::unique_ptr<SymbolIndex> index() const;
OpenPOWER on IntegriCloud