[PATCH] D77348: [clangd] Enable some nice clang-tidy checks by default.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 3 06:58:40 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG164ed7b1d044: [clangd] Enable some nice clang-tidy checks by default. (authored by sammccall).
Changed prior to commit:
https://reviews.llvm.org/D77348?vs=254650&id=254789#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77348/new/
https://reviews.llvm.org/D77348
Files:
clang-tools-extra/clangd/tool/ClangdMain.cpp
Index: clang-tools-extra/clangd/tool/ClangdMain.cpp
===================================================================
--- clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -691,18 +691,42 @@
std::unique_ptr<tidy::ClangTidyOptionsProvider>
ClangTidyOptProvider; /*GUARDED_BY(ClangTidyOptMu)*/
if (EnableClangTidy) {
- auto OverrideClangTidyOptions = tidy::ClangTidyOptions::getDefaults();
- OverrideClangTidyOptions.Checks = ClangTidyChecks;
+ auto EmptyDefaults = tidy::ClangTidyOptions::getDefaults();
+ EmptyDefaults.Checks.reset(); // So we can tell if checks were ever set.
+ tidy::ClangTidyOptions OverrideClangTidyOptions;
+ if (!ClangTidyChecks.empty())
+ OverrideClangTidyOptions.Checks = ClangTidyChecks;
ClangTidyOptProvider = std::make_unique<tidy::FileOptionsProvider>(
tidy::ClangTidyGlobalOptions(),
- /* Default */ tidy::ClangTidyOptions::getDefaults(),
+ /* Default */ EmptyDefaults,
/* Override */ OverrideClangTidyOptions, FSProvider.getFileSystem());
Opts.GetClangTidyOptions = [&](llvm::vfs::FileSystem &,
llvm::StringRef File) {
// This function must be thread-safe and tidy option providers are not.
- std::lock_guard<std::mutex> Lock(ClangTidyOptMu);
- // FIXME: use the FS provided to the function.
- return ClangTidyOptProvider->getOptions(File);
+ tidy::ClangTidyOptions Opts;
+ {
+ std::lock_guard<std::mutex> Lock(ClangTidyOptMu);
+ // FIXME: use the FS provided to the function.
+ Opts = ClangTidyOptProvider->getOptions(File);
+ }
+ if (!Opts.Checks) {
+ // If the user hasn't configured clang-tidy checks at all, including
+ // via .clang-tidy, give them a nice set of checks.
+ // (This should be what the "default" options does, but it isn't...)
+ //
+ // These default checks are chosen for:
+ // - low false-positive rate
+ // - providing a lot of value
+ // - being reasonably efficient
+ Opts.Checks = llvm::join_items(
+ ",", "readability-misleading-indentation",
+ "readability-deleted-default", "bugprone-integer-division",
+ "bugprone-sizeof-expression", "bugprone-suspicious-missing-comma",
+ "bugprone-unused-raii", "bugprone-unused-return-value",
+ "misc-unused-using-decls", "misc-unused-alias-decls",
+ "misc-definitions-in-headers");
+ }
+ return Opts;
};
}
Opts.SuggestMissingIncludes = SuggestMissingIncludes;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77348.254789.patch
Type: text/x-patch
Size: 2638 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200403/2d8971fc/attachment-0001.bin>
More information about the cfe-commits
mailing list