[clang-tools-extra] [clang-tidy] Change AllowCastToVoid default to true in bugprone-unused-return-value (PR #200173)

DonĂ¡t Nagy via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 1 06:10:37 PDT 2026


NagyDonat wrote:

> Looking at the documentation and the default `CheckedFunctions`, I read this check as catching cases where discarding the return value is itself suspicious or wrong.

Yes, the default `CheckedFunctions` lists functions where discarding the return value is suspicious. (I don't think that we can say that it is definitely _wrong_ without any knowledge about the context.)

However, when the programmers write a `(void)` cast, they say that "yes, I know that this is suspicious in general, but I checked that in this particular context this is the right thing to do". The default behavior of Clang Tidy _must_ respect the judgement of the users, because they are professionals who know _much more_ about their own code than our shallow AST-based automated checks. (The checkers may have a paranoid analysis mode that spams the user with "I see you wanted this, but did you _really_ want it?", but it is a terrible experience, so it must not be the default one.) 

> If the discard is intentional and safe, an explicit `// NOLINT(bugprone-unused-return-value)` makes that exception visible to future reviewers. A plain `(void)` cast is much easier to overlook.

But `// NOLINT(bugprone-unused-return-value)` has a _HUGE_ drawback that it is only understood by clang-tidy, while `(void)` is the well-established standard notation for "I'm intentionally discarding this value" which is widely used in the industry and also recognized by many other code analysis tools.

https://github.com/llvm/llvm-project/pull/200173


More information about the cfe-commits mailing list