[PATCH] D55433: [clang-tidy] Adding a new modernize use nodiscard checker
MyDeveloperDay via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 7 12:54:49 PST 2018
MyDeveloperDay added a comment.
I'm trying to generate an example of the modernize-use-nodiscard checker on something open source...as I developed this checker on Windows I struggled a little getting cmake to build me the json file to run clang-tidy over everything and a lot of projects aren't setup of c++17 yet which is needed for [[nodiscard]] to be allowed, but using ClangPowerTools inside Visual studio I decided to run it on **protobuf**
I ran "Tidy Fix" with just the following custom checks "-*,modernize-use-nodiscard" this will fix some of the headers (alot of the headers actually)
recompiling the project, I see this one, which made me laugh...
protobuf\protobuf\src\google\protobuf\descriptor.cc(4238): warning C4834: discarding return value of function with 'nodiscard' attribute
from descriptor.h I can see its fixed the header adding [[nodiscard]]'s
// Tries to find something in the fallback database and link in the
// corresponding proto file. Returns true if successful, in which case
// the caller should search for the thing again. These are declared
// const because they are called by (semantically) const methods.
[[nodiscard]] bool TryFindFileInFallbackDatabase(const std::string& name) const;
[[nodiscard]] bool TryFindSymbolInFallbackDatabase(const std::string& name) const;
ironically there is a comment in the code...
if (tables_->FindFile(proto.dependency(i)) == NULL &&
(pool_->underlay_ == NULL ||
pool_->underlay_->FindFileByName(proto.dependency(i)) == NULL)) {
// We don't care what this returns since we'll find out below anyway.
pool_->TryFindFileInFallbackDatabase(proto.dependency(i));
^^^^^^
}
}
tables_->pending_files_.pop_back();
For me its as much about why the comment was put there, someone was having to explain why they didn't care about the return, but this could easily have been a bug
Bug the clang-tidy -fix doesn't break the build, the patch is large but nothing broke.
F7661182: protobuf.patch <https://reviews.llvm.org/F7661182>
Repository:
rCTE Clang Tools Extra
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55433/new/
https://reviews.llvm.org/D55433
More information about the cfe-commits
mailing list