[clang-tidy] New checker for redundant expressions.
authorEtienne Bergeron <etienneb@google.com>
Tue, 26 Apr 2016 17:30:30 +0000 (17:30 +0000)
committerEtienne Bergeron <etienneb@google.com>
Tue, 26 Apr 2016 17:30:30 +0000 (17:30 +0000)
commitbda187decd34572c8bf601f9ca4928cb0e880606
treeb99d311103cf4f16036c3d2aafd0f78949587e17
parent71515e57f9597cd79a920b01c1646b704557d2b6
[clang-tidy] New checker for redundant expressions.

Summary:
This checker finds redundant expression on both side of a binary operator.

The current implementation provide a function to check whether expressions
are equivalent. This implementation is able to recognize the common
subset encounter in C++ program. Side-effects like "x++" are not considered
to be equivalent.

There are many False Positives related to macros and to floating point
computations (detecting NaN). The checker is ignoring these cases.

Example:
```
    if( !dst || dst->depth != desired_depth ||
        dst->nChannels != desired_num_channels ||
        dst_size.width != src_size.width ||
        dst_size.height != dst_size.height )    <<--- bug
    {
```

Reviewers: alexfh

Subscribers: danielmarjamaki, fahlgren, jordan_rose, zaks.anna, Eugene.Zelenko, cfe-commits

Differential Revision: http://reviews.llvm.org/D19451

llvm-svn: 267574
clang-tools-extra/clang-tidy/misc/CMakeLists.txt
clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp [new file with mode: 0644]
clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.h [new file with mode: 0644]
clang-tools-extra/docs/ReleaseNotes.rst
clang-tools-extra/docs/clang-tidy/checks/list.rst
clang-tools-extra/docs/clang-tidy/checks/misc-redundant-expression.rst [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/misc-redundant-expression.cpp [new file with mode: 0644]