Commit 34aec8e87c46f9cd5a33ff2d8e80253b0a68cd06

Authored by Jarryd Beck
1 parent 52f72a26

Enable warnings and fix them

Fixes #50. This enables -Wall -Wextra -Wshadow and sets -Werror so that
the build fails if there are any warnings. All warnings that came up are
also fixed
CMakeLists.txt
... ... @@ -48,6 +48,8 @@ if(CXXOPTS_USE_UNICODE_HELP)
48 48 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ICU_CFLAGS} -DCXXOPTS_USE_UNICODE")
49 49 endif()
50 50  
  51 +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wshadow")
  52 +
51 53 add_library(cxxopts INTERFACE)
52 54 target_sources(
53 55 cxxopts INTERFACE
... ...
include/cxxopts.hpp
... ... @@ -66,8 +66,8 @@ namespace cxxopts
66 66 {
67 67 public:
68 68  
69   - UnicodeStringIterator(const icu::UnicodeString* s, int32_t pos)
70   - : s(s)
  69 + UnicodeStringIterator(const icu::UnicodeString* string, int32_t pos)
  70 + : s(string)
71 71 , i(pos)
72 72 {
73 73 }
... ... @@ -597,11 +597,11 @@ namespace cxxopts
597 597 public:
598 598 OptionDetails
599 599 (
600   - const String& description,
601   - std::shared_ptr<const Value> value
  600 + const String& desc,
  601 + std::shared_ptr<const Value> val
602 602 )
603   - : m_desc(description)
604   - , m_value(value)
  603 + : m_desc(desc)
  604 + , m_value(val)
605 605 , m_count(0)
606 606 {
607 607 }
... ... @@ -809,7 +809,11 @@ namespace cxxopts
809 809  
810 810 inline
811 811 void
812   - generate_group_help(String& result, const std::vector<std::string>& groups) const;
  812 + generate_group_help
  813 + (
  814 + String& result,
  815 + const std::vector<std::string>& groups
  816 + ) const;
813 817  
814 818 inline
815 819 void
... ... @@ -1010,32 +1014,32 @@ OptionAdder::operator()
1010 1014 throw invalid_option_format_error(opts);
1011 1015 }
1012 1016  
1013   - const auto& s = result[2];
1014   - const auto& l = result[3];
  1017 + const auto& short_match = result[2];
  1018 + const auto& long_match = result[3];
1015 1019  
1016   - if (!s.length() && !l.length())
  1020 + if (!short_match.length() && !long_match.length())
1017 1021 {
1018 1022 throw invalid_option_format_error(opts);
1019   - } else if (l.length() == 1 && s.length())
  1023 + } else if (long_match.length() == 1 && short_match.length())
1020 1024 {
1021 1025 throw invalid_option_format_error(opts);
1022 1026 }
1023 1027  
1024 1028 auto option_names = []
1025 1029 (
1026   - const std::sub_match<const char*>& s,
1027   - const std::sub_match<const char*>& l
  1030 + const std::sub_match<const char*>& short_,
  1031 + const std::sub_match<const char*>& long_
1028 1032 )
1029 1033 {
1030   - if (l.length() == 1)
  1034 + if (long_.length() == 1)
1031 1035 {
1032   - return std::make_tuple(l.str(), s.str());
  1036 + return std::make_tuple(long_.str(), short_.str());
1033 1037 }
1034 1038 else
1035 1039 {
1036   - return std::make_tuple(s.str(), l.str());
  1040 + return std::make_tuple(short_.str(), long_.str());
1037 1041 }
1038   - }(s, l);
  1042 + }(short_match, long_match);
1039 1043  
1040 1044 m_options.add_option
1041 1045 (
... ... @@ -1437,14 +1441,21 @@ Options::help_one_group(const std::string&amp; g) const
1437 1441 }
1438 1442  
1439 1443 void
1440   -Options::generate_group_help(String& result, const std::vector<std::string>& groups) const
  1444 +Options::generate_group_help
  1445 +(
  1446 + String& result,
  1447 + const std::vector<std::string>& print_groups
  1448 +) const
1441 1449 {
1442   - for (std::size_t i = 0; i < groups.size(); ++i)
  1450 + for (size_t i = 0; i != print_groups.size(); ++i)
1443 1451 {
1444   - String const& group_help = help_one_group(groups[i]);
1445   - if (empty(group_help)) continue;
1446   - result += group_help;
1447   - if (i < groups.size() - 1)
  1452 + const String& group_help_text = help_one_group(print_groups[i]);
  1453 + if (empty(group_help_text))
  1454 + {
  1455 + continue;
  1456 + }
  1457 + result += group_help_text;
  1458 + if (i < print_groups.size() - 1)
1448 1459 {
1449 1460 result += '\n';
1450 1461 }
... ... @@ -1454,19 +1465,19 @@ Options::generate_group_help(String&amp; result, const std::vector&lt;std::string&gt;&amp; gro
1454 1465 void
1455 1466 Options::generate_all_groups_help(String& result) const
1456 1467 {
1457   - std::vector<std::string> groups;
1458   - groups.reserve(m_help.size());
  1468 + std::vector<std::string> all_groups;
  1469 + all_groups.reserve(m_help.size());
1459 1470  
1460 1471 for (auto& group : m_help)
1461 1472 {
1462   - groups.push_back(group.first);
  1473 + all_groups.push_back(group.first);
1463 1474 }
1464 1475  
1465   - generate_group_help(result, groups);
  1476 + generate_group_help(result, all_groups);
1466 1477 }
1467 1478  
1468 1479 std::string
1469   -Options::help(const std::vector<std::string>& groups) const
  1480 +Options::help(const std::vector<std::string>& help_groups) const
1470 1481 {
1471 1482 String result = m_help_string + "\nUsage:\n " +
1472 1483 toLocalString(m_program) + " [OPTION...]";
... ... @@ -1477,13 +1488,13 @@ Options::help(const std::vector&lt;std::string&gt;&amp; groups) const
1477 1488  
1478 1489 result += "\n\n";
1479 1490  
1480   - if (groups.size() == 0)
  1491 + if (help_groups.size() == 0)
1481 1492 {
1482 1493 generate_all_groups_help(result);
1483 1494 }
1484 1495 else
1485 1496 {
1486   - generate_group_help(result, groups);
  1497 + generate_group_help(result, help_groups);
1487 1498 }
1488 1499  
1489 1500 return toUTF8String(result);
... ...
test/options.cpp
... ... @@ -7,13 +7,13 @@
7 7 class Argv {
8 8 public:
9 9  
10   - Argv(std::initializer_list<const char*> argv)
11   - : m_argv(new char*[argv.size()])
12   - , m_argc(argv.size())
  10 + Argv(std::initializer_list<const char*> args)
  11 + : m_argv(new char*[args.size()])
  12 + , m_argc(args.size())
13 13 {
14 14 int i = 0;
15   - auto iter = argv.begin();
16   - while (iter != argv.end()) {
  15 + auto iter = args.begin();
  16 + while (iter != args.end()) {
17 17 auto len = strlen(*iter) + 1;
18 18 auto ptr = std::unique_ptr<char[]>(new char[len]);
19 19  
... ...