[clang-tidy] add new checker for string literal with NUL character.
authorEtienne Bergeron <etienneb@google.com>
Thu, 7 Apr 2016 16:16:36 +0000 (16:16 +0000)
committerEtienne Bergeron <etienneb@google.com>
Thu, 7 Apr 2016 16:16:36 +0000 (16:16 +0000)
commita5fd19ba1e6a50c49ea8be34caa6b398f7f08546
treea10daf7ada942faf021f0dcfa378412b1f0c59b8
parent3802c4af596d1e708a999ddb3e965e9b60820ad6
[clang-tidy] add new checker for string literal with NUL character.

Summary:
This patch adds the support for detecting suspicious string
literals and their //incorrect// usage.

The following example shows a incorrect character escaping leading
to an embedded NUL character.
```
  std::string str = "\0x42";   // Should be "\x42".
```

The patch also add detection of truncated literal when a literal
is passed to a string constructor.

Reviewers: hokein, alexfh

Subscribers: LegalizeAdulthood, bcraig, Eugene.Zelenko, bkramer, cfe-commits

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

llvm-svn: 265691
clang-tools-extra/clang-tidy/misc/CMakeLists.txt
clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
clang-tools-extra/clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.cpp [new file with mode: 0644]
clang-tools-extra/clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.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-string-literal-with-embedded-nul.rst [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/misc-string-literal-with-embedded-nul.cpp [new file with mode: 0644]