Fix clang-tidy warnings in aapt and aapt2.
* Add explicit keyword to conversion constructors.
* Add NOLINT(implicit) comments for implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Add NOLINT to suppress wrong clang-tidy warnings on macros.
Test: build with WITH_TIDY=1
Change-Id: Ibfafb23d9be463b4072745a51a6d9f1812dcac45
diff --git a/tools/aapt2/Diagnostics.h b/tools/aapt2/Diagnostics.h
index e86f2a8..725027c 100644
--- a/tools/aapt2/Diagnostics.h
+++ b/tools/aapt2/Diagnostics.h
@@ -41,13 +41,13 @@
public:
DiagMessage() = default;
- DiagMessage(const StringPiece& src) : mSource(src) {
+ explicit DiagMessage(const StringPiece& src) : mSource(src) {
}
- DiagMessage(const Source& src) : mSource(src) {
+ explicit DiagMessage(const Source& src) : mSource(src) {
}
- DiagMessage(size_t line) : mSource(Source().withLine(line)) {
+ explicit DiagMessage(size_t line) : mSource(Source().withLine(line)) {
}
template <typename T>
diff --git a/tools/aapt2/NameMangler.h b/tools/aapt2/NameMangler.h
index 505a982e..b6aaa4d 100644
--- a/tools/aapt2/NameMangler.h
+++ b/tools/aapt2/NameMangler.h
@@ -43,7 +43,7 @@
NameManglerPolicy mPolicy;
public:
- NameMangler(NameManglerPolicy policy) : mPolicy(policy) {
+ explicit NameMangler(NameManglerPolicy policy) : mPolicy(policy) {
}
Maybe<ResourceName> mangleName(const ResourceName& name) {
diff --git a/tools/aapt2/Source.h b/tools/aapt2/Source.h
index 319528e..8a1021d 100644
--- a/tools/aapt2/Source.h
+++ b/tools/aapt2/Source.h
@@ -35,7 +35,7 @@
Source() = default;
- inline Source(const StringPiece& path) : path(path.toString()) {
+ inline Source(const StringPiece& path) : path(path.toString()) { // NOLINT(implicit)
}
inline Source(const StringPiece& path, size_t line) : path(path.toString()), line(line) {
diff --git a/tools/aapt2/ValueVisitor.h b/tools/aapt2/ValueVisitor.h
index b8bc5db..9dc6a9c 100644
--- a/tools/aapt2/ValueVisitor.h
+++ b/tools/aapt2/ValueVisitor.h
@@ -45,8 +45,9 @@
virtual void visit(Styleable* value) {}
};
+// NOLINT, do not add parentheses around T.
#define DECL_VISIT_COMPOUND_VALUE(T) \
- virtual void visit(T* value) { \
+ virtual void visit(T* value) { /* NOLINT */ \
visitSubValues(value); \
}
diff --git a/tools/aapt2/compile/Png.h b/tools/aapt2/compile/Png.h
index 345ff6c..f835b06e 100644
--- a/tools/aapt2/compile/Png.h
+++ b/tools/aapt2/compile/Png.h
@@ -32,7 +32,7 @@
class Png {
public:
- Png(IDiagnostics* diag) : mDiag(diag) {
+ explicit Png(IDiagnostics* diag) : mDiag(diag) {
}
bool process(const Source& source, std::istream* input, BigBuffer* outBuffer,
diff --git a/tools/aapt2/compile/Pseudolocalizer.h b/tools/aapt2/compile/Pseudolocalizer.h
index 7db88de..91d17d174 100644
--- a/tools/aapt2/compile/Pseudolocalizer.h
+++ b/tools/aapt2/compile/Pseudolocalizer.h
@@ -43,7 +43,7 @@
kBidi,
};
- Pseudolocalizer(Method method);
+ explicit Pseudolocalizer(Method method);
void setMethod(Method method);
std::string start() { return mImpl->start(); }
std::string end() { return mImpl->end(); }
diff --git a/tools/aapt2/flatten/TableFlattener.h b/tools/aapt2/flatten/TableFlattener.h
index 0ab0197..b416f20 100644
--- a/tools/aapt2/flatten/TableFlattener.h
+++ b/tools/aapt2/flatten/TableFlattener.h
@@ -26,7 +26,7 @@
class TableFlattener : public IResourceTableConsumer {
public:
- TableFlattener(BigBuffer* buffer) : mBuffer(buffer) {
+ explicit TableFlattener(BigBuffer* buffer) : mBuffer(buffer) {
}
bool consume(IAaptContext* context, ResourceTable* table) override;
diff --git a/tools/aapt2/io/FileSystem.h b/tools/aapt2/io/FileSystem.h
index f0559c0..72a932a 100644
--- a/tools/aapt2/io/FileSystem.h
+++ b/tools/aapt2/io/FileSystem.h
@@ -29,7 +29,7 @@
*/
class RegularFile : public IFile {
public:
- RegularFile(const Source& source);
+ explicit RegularFile(const Source& source);
std::unique_ptr<IData> openAsData() override;
const Source& getSource() const override;
@@ -42,7 +42,7 @@
class FileCollectionIterator : public IFileCollectionIterator {
public:
- FileCollectionIterator(FileCollection* collection);
+ explicit FileCollectionIterator(FileCollection* collection);
bool hasNext() override;
io::IFile* next() override;
diff --git a/tools/aapt2/io/ZipArchive.h b/tools/aapt2/io/ZipArchive.h
index 5ad119d..565588e 100644
--- a/tools/aapt2/io/ZipArchive.h
+++ b/tools/aapt2/io/ZipArchive.h
@@ -47,7 +47,7 @@
class ZipFileCollectionIterator : public IFileCollectionIterator {
public:
- ZipFileCollectionIterator(ZipFileCollection* collection);
+ explicit ZipFileCollectionIterator(ZipFileCollection* collection);
bool hasNext() override;
io::IFile* next() override;
diff --git a/tools/aapt2/java/ClassDefinition.h b/tools/aapt2/java/ClassDefinition.h
index d45328f..e84c274 100644
--- a/tools/aapt2/java/ClassDefinition.h
+++ b/tools/aapt2/java/ClassDefinition.h
@@ -110,7 +110,7 @@
template <typename T>
class PrimitiveArrayMember : public ClassMember {
public:
- PrimitiveArrayMember(const StringPiece& name) :
+ explicit PrimitiveArrayMember(const StringPiece& name) :
mName(name.toString()) {
}
diff --git a/tools/aapt2/link/ManifestFixer.h b/tools/aapt2/link/ManifestFixer.h
index 55b587e..2e81266 100644
--- a/tools/aapt2/link/ManifestFixer.h
+++ b/tools/aapt2/link/ManifestFixer.h
@@ -41,7 +41,7 @@
*/
class ManifestFixer : public IXmlResourceConsumer {
public:
- ManifestFixer(const ManifestFixerOptions& options) : mOptions(options) {
+ explicit ManifestFixer(const ManifestFixerOptions& options) : mOptions(options) {
}
bool consume(IAaptContext* context, xml::XmlResource* doc) override;
diff --git a/tools/aapt2/link/ProductFilter.h b/tools/aapt2/link/ProductFilter.h
index d2edd38..7724e14 100644
--- a/tools/aapt2/link/ProductFilter.h
+++ b/tools/aapt2/link/ProductFilter.h
@@ -29,7 +29,7 @@
public:
using ResourceConfigValueIter = std::vector<std::unique_ptr<ResourceConfigValue>>::iterator;
- ProductFilter(std::unordered_set<std::string> products) : mProducts(products) { }
+ explicit ProductFilter(std::unordered_set<std::string> products) : mProducts(products) { }
ResourceConfigValueIter selectProductToKeep(const ResourceNameRef& name,
const ResourceConfigValueIter begin,
diff --git a/tools/aapt2/process/SymbolTable.h b/tools/aapt2/process/SymbolTable.h
index bd01b64..bd31416 100644
--- a/tools/aapt2/process/SymbolTable.h
+++ b/tools/aapt2/process/SymbolTable.h
@@ -54,7 +54,7 @@
Symbol() : Symbol(Maybe<ResourceId>{}) {
}
- Symbol(const Maybe<ResourceId>& i) : Symbol(i, nullptr) {
+ explicit Symbol(const Maybe<ResourceId>& i) : Symbol(i, nullptr) {
}
Symbol(const Maybe<ResourceId>& i, const std::shared_ptr<Attribute>& attr) :
diff --git a/tools/aapt2/test/Builders.h b/tools/aapt2/test/Builders.h
index c0c0160..637e991 100644
--- a/tools/aapt2/test/Builders.h
+++ b/tools/aapt2/test/Builders.h
@@ -46,12 +46,12 @@
return *this;
}
- ResourceTableBuilder& addSimple(const StringPiece& name, const ResourceId id = {}) {
+ ResourceTableBuilder& addSimple(const StringPiece& name, const ResourceId& id = {}) {
return addValue(name, id, util::make_unique<Id>());
}
ResourceTableBuilder& addSimple(const StringPiece& name, const ConfigDescription& config,
- const ResourceId id = {}) {
+ const ResourceId& id = {}) {
return addValue(name, config, id, util::make_unique<Id>());
}
@@ -59,7 +59,7 @@
return addReference(name, {}, ref);
}
- ResourceTableBuilder& addReference(const StringPiece& name, const ResourceId id,
+ ResourceTableBuilder& addReference(const StringPiece& name, const ResourceId& id,
const StringPiece& ref) {
return addValue(name, id, util::make_unique<Reference>(parseNameOrDie(ref)));
}
@@ -68,12 +68,12 @@
return addString(name, {}, str);
}
- ResourceTableBuilder& addString(const StringPiece& name, const ResourceId id,
+ ResourceTableBuilder& addString(const StringPiece& name, const ResourceId& id,
const StringPiece& str) {
return addValue(name, id, util::make_unique<String>(mTable->stringPool.makeRef(str)));
}
- ResourceTableBuilder& addString(const StringPiece& name, const ResourceId id,
+ ResourceTableBuilder& addString(const StringPiece& name, const ResourceId& id,
const ConfigDescription& config, const StringPiece& str) {
return addValue(name, config, id,
util::make_unique<String>(mTable->stringPool.makeRef(str)));
@@ -83,7 +83,7 @@
return addFileReference(name, {}, path);
}
- ResourceTableBuilder& addFileReference(const StringPiece& name, const ResourceId id,
+ ResourceTableBuilder& addFileReference(const StringPiece& name, const ResourceId& id,
const StringPiece& path) {
return addValue(name, id,
util::make_unique<FileReference>(mTable->stringPool.makeRef(path)));
@@ -100,13 +100,13 @@
return addValue(name, {}, std::move(value));
}
- ResourceTableBuilder& addValue(const StringPiece& name, const ResourceId id,
+ ResourceTableBuilder& addValue(const StringPiece& name, const ResourceId& id,
std::unique_ptr<Value> value) {
return addValue(name, {}, id, std::move(value));
}
ResourceTableBuilder& addValue(const StringPiece& name, const ConfigDescription& config,
- const ResourceId id, std::unique_ptr<Value> value) {
+ const ResourceId& id, std::unique_ptr<Value> value) {
ResourceName resName = parseNameOrDie(name);
bool result = mTable->addResourceAllowMangled(resName, id, config, {},
std::move(value), &mDiagnostics);
@@ -114,7 +114,7 @@
return *this;
}
- ResourceTableBuilder& setSymbolState(const StringPiece& name, ResourceId id,
+ ResourceTableBuilder& setSymbolState(const StringPiece& name, const ResourceId& id,
SymbolState state) {
ResourceName resName = parseNameOrDie(name);
Symbol symbol;
@@ -130,7 +130,7 @@
};
inline std::unique_ptr<Reference> buildReference(const StringPiece& ref,
- Maybe<ResourceId> id = {}) {
+ const Maybe<ResourceId>& id = {}) {
std::unique_ptr<Reference> reference = util::make_unique<Reference>(parseNameOrDie(ref));
reference->id = id;
return reference;
@@ -151,7 +151,7 @@
public:
template <typename... Args>
- ValueBuilder(Args&&... args) : mValue(new T{ std::forward<Args>(args)... }) {
+ explicit ValueBuilder(Args&&... args) : mValue(new T{ std::forward<Args>(args)... }) {
}
template <typename... Args>
@@ -175,7 +175,7 @@
std::unique_ptr<Attribute> mAttr;
public:
- AttributeBuilder(bool weak = false) : mAttr(util::make_unique<Attribute>(weak)) {
+ explicit AttributeBuilder(bool weak = false) : mAttr(util::make_unique<Attribute>(weak)) {
mAttr->typeMask = android::ResTable_map::TYPE_ANY;
}
@@ -211,7 +211,7 @@
return *this;
}
- StyleBuilder& addItem(const StringPiece& str, ResourceId id, std::unique_ptr<Item> value) {
+ StyleBuilder& addItem(const StringPiece& str, const ResourceId& id, std::unique_ptr<Item> value) {
addItem(str, std::move(value));
mStyle->entries.back().key.id = id;
return *this;
@@ -227,7 +227,7 @@
std::unique_ptr<Styleable> mStyleable = util::make_unique<Styleable>();
public:
- StyleableBuilder& addItem(const StringPiece& str, Maybe<ResourceId> id = {}) {
+ StyleableBuilder& addItem(const StringPiece& str, const Maybe<ResourceId>& id = {}) {
mStyleable->entries.push_back(Reference(parseNameOrDie(str)));
mStyleable->entries.back().id = id;
return *this;
diff --git a/tools/aapt2/test/Common.h b/tools/aapt2/test/Common.h
index 624a71a..7fafcbe 100644
--- a/tools/aapt2/test/Common.h
+++ b/tools/aapt2/test/Common.h
@@ -104,7 +104,7 @@
Source mSource;
public:
- TestFile(const StringPiece& path) : mSource(path) {}
+ explicit TestFile(const StringPiece& path) : mSource(path) {}
std::unique_ptr<io::IData> openAsData() override {
return {};
diff --git a/tools/aapt2/test/Context.h b/tools/aapt2/test/Context.h
index b053e07..54f16db 100644
--- a/tools/aapt2/test/Context.h
+++ b/tools/aapt2/test/Context.h
@@ -87,7 +87,7 @@
return *this;
}
- ContextBuilder& setNameManglerPolicy(NameManglerPolicy policy) {
+ ContextBuilder& setNameManglerPolicy(const NameManglerPolicy& policy) {
mContext->mNameMangler = NameMangler(policy);
return *this;
}
diff --git a/tools/aapt2/util/BigBuffer.h b/tools/aapt2/util/BigBuffer.h
index cad2a2e..ba8532f 100644
--- a/tools/aapt2/util/BigBuffer.h
+++ b/tools/aapt2/util/BigBuffer.h
@@ -63,7 +63,7 @@
* Create a BigBuffer with block allocation sizes
* of blockSize.
*/
- BigBuffer(size_t blockSize);
+ explicit BigBuffer(size_t blockSize);
BigBuffer(const BigBuffer&) = delete; // No copying.
diff --git a/tools/aapt2/util/Files.h b/tools/aapt2/util/Files.h
index 4d8a1fe..52c2052 100644
--- a/tools/aapt2/util/Files.h
+++ b/tools/aapt2/util/Files.h
@@ -109,7 +109,7 @@
*/
class FileFilter {
public:
- FileFilter(IDiagnostics* diag) : mDiag(diag) {
+ explicit FileFilter(IDiagnostics* diag) : mDiag(diag) {
}
/*
diff --git a/tools/aapt2/util/Maybe.h b/tools/aapt2/util/Maybe.h
index a31bc89..129f6d9 100644
--- a/tools/aapt2/util/Maybe.h
+++ b/tools/aapt2/util/Maybe.h
@@ -43,12 +43,12 @@
Maybe(const Maybe& rhs);
template <typename U>
- Maybe(const Maybe<U>& rhs);
+ Maybe(const Maybe<U>& rhs); // NOLINT(implicit)
Maybe(Maybe&& rhs);
template <typename U>
- Maybe(Maybe<U>&& rhs);
+ Maybe(Maybe<U>&& rhs); // NOLINT(implicit)
Maybe& operator=(const Maybe& rhs);
@@ -63,12 +63,12 @@
/**
* Construct a Maybe holding a value.
*/
- Maybe(const T& value);
+ Maybe(const T& value); // NOLINT(implicit)
/**
* Construct a Maybe holding a value.
*/
- Maybe(T&& value);
+ Maybe(T&& value); // NOLINT(implicit)
/**
* True if this holds a value, false if
diff --git a/tools/aapt2/util/StringPiece.h b/tools/aapt2/util/StringPiece.h
index f5c985b..4300a67 100644
--- a/tools/aapt2/util/StringPiece.h
+++ b/tools/aapt2/util/StringPiece.h
@@ -41,8 +41,8 @@
BasicStringPiece();
BasicStringPiece(const BasicStringPiece<TChar>& str);
- BasicStringPiece(const std::basic_string<TChar>& str);
- BasicStringPiece(const TChar* str);
+ BasicStringPiece(const std::basic_string<TChar>& str); // NOLINT(implicit)
+ BasicStringPiece(const TChar* str); // NOLINT(implicit)
BasicStringPiece(const TChar* str, size_t len);
BasicStringPiece<TChar>& operator=(const BasicStringPiece<TChar>& rhs);
diff --git a/tools/aapt2/util/Util.h b/tools/aapt2/util/Util.h
index 4a10987..112437dc 100644
--- a/tools/aapt2/util/Util.h
+++ b/tools/aapt2/util/Util.h
@@ -242,7 +242,7 @@
const iterator mEnd;
};
-inline Tokenizer tokenize(StringPiece str, char sep) {
+inline Tokenizer tokenize(const StringPiece& str, char sep) {
return Tokenizer(str, sep);
}
@@ -281,7 +281,7 @@
* In the aapt namespace for lookup.
*/
inline ::std::ostream& operator<<(::std::ostream& out,
- ::std::function<::std::ostream&(::std::ostream&)> f) {
+ const ::std::function<::std::ostream&(::std::ostream&)>& f) {
return f(out);
}
diff --git a/tools/aapt2/xml/XmlPullParser.h b/tools/aapt2/xml/XmlPullParser.h
index ee51b36..a24d109 100644
--- a/tools/aapt2/xml/XmlPullParser.h
+++ b/tools/aapt2/xml/XmlPullParser.h
@@ -60,7 +60,7 @@
static bool skipCurrentElement(XmlPullParser* parser);
static bool isGoodEvent(Event event);
- XmlPullParser(std::istream& in);
+ explicit XmlPullParser(std::istream& in);
~XmlPullParser();
/**