1. [clang-tidy] Fix readability-redundant-string-init for c++17/c++2a (details)
  2. [clang-tidy] Give readability-redundant-string-init a customizable list (details)
Commit 06f3dabe4a2e85a32ade27c0769b6084c828a206 by mitchell
[clang-tidy] Fix readability-redundant-string-init for c++17/c++2a
`readability-redundant-string-init` was one of several clang-tidy checks
documented as failing for C++17. (The failure mode in C++17 is that it
changes `std::string Name = ""`; to `std::string Name = Name;`, which
actually compiles but crashes at run-time.)
Analyzing the AST with `clang -Xclang -ast-dump` showed that the outer
`CXXConstructExprs` that previously held the correct SourceRange were
being elided in C++17/2a, but the containing `VarDecl` expressions still
had all the relevant information. So this patch changes the fix to get
its source ranges from `VarDecl`.
It adds one test `std::string g = "u", h = "", i = "uuu", j = "", k;` to
confirm proper warnings and fixit replacements in a single `DeclStmt`
where some strings require replacement and others don't. The
readability-redundant-string-init.cpp and
readability-redundant-string-init-msvc.cpp tests now pass for
Reviewers: gribozavr, etienneb, alexfh, hokein, aaron.ballman,
Patch by: poelmanc
Subscribers: NoQ, MyDeveloperDay, Eugene.Zelenko, dylanmckay,
Tags: #clang, #clang-tools-extra
Differential Revision:
The file was modifiedclang-tools-extra/clang-tidy/modernize/UseOverrideCheck.h
The file was modifiedclang-tools-extra/docs/ReleaseNotes.rst
The file was modifiedclang-tools-extra/docs/clang-tidy/checks/modernize-use-override.rst
The file was modifiedclang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp
Commit 12d7500ba2417c7f299daa83a7812962f15632ec by mitchell
[clang-tidy] Give readability-redundant-string-init a customizable list
of string types to fix
Summary: This patch adds a feature requested in to enable
`readability-redundant-string-init` to take a list of strings to apply
the fix to rather than hard-coding `basic_string`. It adds a
`StringNames` option of semicolon-delimited names of string classes to
which to apply this fix. Tests ensure this works with test class
out::TestString as well as std::string and std::wstring as before. It
should be applicable to llvm::StringRef, QString, etc.
Note: This commit was previously reverted due to a failing unit test.
That test has been fixed in this version.
Reviewers: MyDeveloperDay, aaron.ballman, hokein, alexfh, JonasToth,
Patch by: poelmanc
Subscribers: gribozavr2, xazax.hun, Eugene.Zelenko, cfe-commits
Tags: #clang-tools-extra, #clang
Differential Revision:
The file was modifiedclang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp
The file was modifiedclang-tools-extra/test/clang-tidy/checkers/readability-redundant-string-init.cpp
The file was modifiedclang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.h
The file was modifiedclang-tools-extra/docs/clang-tidy/checks/readability-redundant-string-init.rst
The file was modifiedclang-tools-extra/docs/ReleaseNotes.rst