[clang-tidy] Add checker for operations between integrals and pointers
authorEtienne Bergeron <etienneb@google.com>
Fri, 15 Apr 2016 16:31:15 +0000 (16:31 +0000)
committerEtienne Bergeron <etienneb@google.com>
Fri, 15 Apr 2016 16:31:15 +0000 (16:31 +0000)
commit3c5be6c9a72bad003348459a578b6b37678b075e
tree45050b741332121ab3581141e4fafd2e72ff0a68
parent19124d3d7e01fd0f88e4884e92f757f3801a1e86
[clang-tidy] Add checker for operations between integrals and pointers

Summary:
This check is finding suspicious operations involving pointers and integral types; which are most likely bugs.

Examples:
subversion/v1_6/subversion/libsvn_subr/utf.c
```
static const char *
fuzzy_escape(const char *src, apr_size_t len, apr_pool_t *pool)
{
  [...]
   while (src_orig < src_end)
    {
      if (! svn_ctype_isascii(*src_orig) || src_orig == '\0')   // Should be *src_orig
        {
```

apache2/v2_2_23/modules/metadata/mod_headers.c
```
static char *parse_format_tag(apr_pool_t *p, format_tag *tag, const char **sa)
{
  [...]
    tag->arg = '\0';   // ERROR: tag->arg has type char*

    /* grab the argument if there is one */
    if (*s == '{') {
        ++s;
        tag->arg = ap_getword(p,&s,'}');
    }
```

Reviewers: alexfh

Subscribers: Eugene.Zelenko, cfe-commits

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

llvm-svn: 266450
clang-tools-extra/clang-tidy/misc/CMakeLists.txt
clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
clang-tools-extra/clang-tidy/misc/PointerAndIntegralOperationCheck.cpp [new file with mode: 0644]
clang-tools-extra/clang-tidy/misc/PointerAndIntegralOperationCheck.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-pointer-and-integral-operation.rst [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/misc-pointer-and-integral-operation-cxx98.cpp [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/misc-pointer-and-integral-operation.cpp [new file with mode: 0644]