diff --git a/.clang-tidy b/.clang-tidy index a1a36f5f..c27ef5a2 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,6 @@ #Checks: '*,-clang-analyzer-alpha.*' #Checks: '-*,google-readability-casting,llvm-namespace-comment,performance-unnecessary-value-param,llvm-include-order,misc-throw-by-value-catch-by-reference,readability-container-size-empty,google-runtime-references,modernize*' -Checks: '-*,llvm-namespace-comment,llvm-include-order' +Checks: '-*,llvm-namespace-comment,llvm-include-order,readability-container-size-empty' HeaderFilterRegex: '.*hpp' CheckOptions: - key: readability-braces-around-statements.ShortStatementLines diff --git a/include/CLI/App.hpp b/include/CLI/App.hpp index cc00f4dd..2f93e623 100644 --- a/include/CLI/App.hpp +++ b/include/CLI/App.hpp @@ -602,7 +602,7 @@ public: for(const Option_p &opt : options_) { // Only process option with a long-name - if(opt->lnames_.size() > 0) { + if(!opt->lnames_.empty()) { std::string name = prefix + opt->lnames_[0]; // Non-flags @@ -644,7 +644,7 @@ public: prev += " " + name_; auto selected_subcommands = get_subcommands(); - if(selected_subcommands.size() > 0) + if(!selected_subcommands.empty()) return selected_subcommands.at(0)->help(wid, prev); std::stringstream out; @@ -676,7 +676,7 @@ public: pos=true; } - if(subcommands_.size() > 0) { + if(!subcommands_.empty()) { if(require_subcommand_ != 0) out << " SUBCOMMAND"; else @@ -715,7 +715,7 @@ public: } // Subcommands - if(subcommands_.size()> 0) { + if(!subcommands_.empty()) { out << "Subcommands:" << std::endl; for(const App_p &com : subcommands_) detail::format_help(out, com->get_name(), com->description_, wid); @@ -829,7 +829,7 @@ protected: parsed_ = true; bool positional_only = false; - while(args.size()>0) { + while(!args.empty()) { _parse_single(args, positional_only); } @@ -842,7 +842,7 @@ protected: if (config_ptr_ != nullptr && config_name_ != "") { try { std::vector values = detail::parse_ini(config_name_); - while(values.size() > 0) { + while(!values.empty()) { if(!_parse_ini(values)) { throw ExtrasINIError(values.back().fullname); } @@ -888,7 +888,7 @@ protected: } auto selected_subcommands =get_subcommands(); - if(require_subcommand_ < 0 && selected_subcommands.size() == 0) + if(require_subcommand_ < 0 && selected_subcommands.empty()) throw RequiredError("Subcommand required"); else if(require_subcommand_ > 0 && static_cast( selected_subcommands.size()) != require_subcommand_) throw RequiredError(std::to_string(require_subcommand_) + " subcommand(s) required"); @@ -1081,11 +1081,11 @@ protected: if(num == -1) { - while(args.size()>0 && _recognize(args.back()) == detail::Classifer::NONE) { + while(!args.empty() && _recognize(args.back()) == detail::Classifer::NONE) { op->add_result(args.back()); args.pop_back(); } - } else while(num>0 && args.size() > 0) { + } else while(num>0 && !args.empty()) { num--; std::string current_ = args.back(); args.pop_back(); @@ -1137,11 +1137,11 @@ protected: } if(num == -1) { - while(args.size() > 0 && _recognize(args.back()) == detail::Classifer::NONE) { + while(!args.empty() && _recognize(args.back()) == detail::Classifer::NONE) { op->add_result(args.back()); args.pop_back(); } - } else while(num>0 && args.size()>0) { + } else while(num>0 && !args.empty()) { num--; op->add_result(args.back()); args.pop_back(); diff --git a/include/CLI/Option.hpp b/include/CLI/Option.hpp index 0f4c2421..2f42e197 100644 --- a/include/CLI/Option.hpp +++ b/include/CLI/Option.hpp @@ -354,12 +354,12 @@ public: } if(envname_ != "") out << " (env:" << envname_ << ")"; - if(requires_.size() > 0) { + if(!requires_.empty()) { out << " Requires:"; for(const Option* opt : requires_) out << " " << opt->get_name(); } - if(excludes_.size() > 0) { + if(!excludes_.empty()) { out << " Excludes:"; for(const Option* opt : excludes_) out << " " << opt->get_name(); @@ -377,7 +377,7 @@ public: void run_callback() const { if(!callback_(results_)) throw ConversionError(get_name() + "=" + detail::join(results_)); - if(validators_.size()>0) { + if(!validators_.empty()) { for(const std::string & result : results_) for(const std::function &vali : validators_) if(!vali(result)) @@ -486,7 +486,7 @@ public: ///@{ /// Can print positional name detailed option if true bool _has_help_positional() const { - return get_positional() && (has_description() || requires_.size()>0 || excludes_.size()>0 ); + return get_positional() && (has_description() || !requires_.empty() || !excludes_.empty() ); } ///@} }; diff --git a/include/CLI/StringTools.hpp b/include/CLI/StringTools.hpp index 8d4534a6..f8a4ce3b 100644 --- a/include/CLI/StringTools.hpp +++ b/include/CLI/StringTools.hpp @@ -136,7 +136,7 @@ bool valid_later_char(T c) { /// Verify an option name inline bool valid_name_string(const std::string &str) { - if(str.size()<1 || !valid_first_char(str[0])) + if(str.empty() || !valid_first_char(str[0])) return false; for(auto c : str.substr(1)) if(!valid_later_char(c)) @@ -160,7 +160,7 @@ inline std::vector split_up(std::string str) { std::vector output; - while(str.size() > 0) { + while(!str.empty()) { if(str[0] == '\'') { auto end = str.find('\'', 1); if(end != std::string::npos) {