Clears warnings for the following checks in clang-tidy:
readability-braces-around-statements
readability-else-after-return checks
Also adds hints about code style to CONTRIBUTING document.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
After upgrading g++ package to 12.1.0 on archlinux I see the following
compilation error:
/usr/include/argparse/argparse.hpp: In member function ‘void argparse::ArgumentParser::index_argument(list_iterator)’:
/usr/include/argparse/argparse.hpp:1167:34: error: ‘as_const’ is not a member of ‘std’; did you mean ‘is_const’?
1167 | for (const auto &name : std::as_const(it->m_names)) {
| ^~~~~~~~
| is_const
It turns out that std::as_const comes from <utility> header [1] which
was not explicitly included.
[1] https://en.cppreference.com/w/cpp/utility/as_const
As far as I can tell, this statement is never true.
When m_values.size() < *expected, ::consume has already thrown "Too few
arguments..." before ::validate is called.
When m_values.size() > *expected, ArgumentParser::parse_args_internal
has already thrown "Maximum number of positional arguments exceeded"
before ::validate is called.
If ::remaining is used to avoid the last exception, this Argument will
always consume the expected number of values, hence this expression is
again false.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
This regression was caused by commit
ea1f7ef663, which didn't add "\n" to the
version printing statement. We use std::endl now for compatibility
across platforms.
I am seeing too many errors due to bad tool configuration, not from
problems in project code. So, disable SA until I can make it work more
reliably.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
The 'unused' variable in both cases is most-definitely unused in the loop.
This is a cppcheck warning that appeared after moving these two loops to
range-for.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
This code was previously moved from ::parse_args to its own method, but
has since been simplified. Moving the actual work to Argument::validate
in commit 603e87ae6 leaves a single loop that fits back into ::parse_args.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
The new naming pattern is CamelCase for structs, except parse_number as a
primarily callable interface. Trait structs are named Has*Traits
and constexpr variables to the struct template are named Is*.
Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>