diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-02-06 14:37:15 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-02-06 14:37:15 +0000 |
commit | ec8c65386ea0121b80970ccd6ca6cb622a23c040 (patch) | |
tree | e9d656fb87eea0542111a4a4a7d023045081e7c3 | |
parent | requiredParameterNotFound is noreturn (diff) | |
download | icespider-ec8c65386ea0121b80970ccd6ca6cb622a23c040.tar.bz2 icespider-ec8c65386ea0121b80970ccd6ca6cb622a23c040.tar.xz icespider-ec8c65386ea0121b80970ccd6ca6cb622a23c040.zip |
Fix all non-unittest warnings
47 files changed, 677 insertions, 114 deletions
diff --git a/Jamroot.jam b/Jamroot.jam index de7cae6..5a6f3b3 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -33,6 +33,7 @@ project <variant>coverage:<coverage>on <toolset>tidy:<checkxx>boost-* <toolset>tidy:<checkxx>bugprone-* + <toolset>tidy:<xcheckxx>bugprone-easily-swappable-parameters <toolset>tidy:<checkxx>clang-* <toolset>tidy:<checkxx>misc-* <toolset>tidy:<xcheckxx>misc-non-private-member-variables-in-classes @@ -43,13 +44,14 @@ project <toolset>tidy:<checkxx>performance-* <toolset>tidy:<exclude>common/bin/http.h <toolset>tidy:<exclude>common/bin/session.h - <toolset>tidy:<exclude>cxxstd-17-iso/routes.h + <toolset>tidy:<exclude>cxxstd-20-iso/routes.h <toolset>tidy:<exclude>core/bin/routeOptions.h <toolset>tidy:<exclude>unittests/bin/test-api.h <toolset>tidy:<exclude>unittests/bin/test-fcgi.h <toolset>tidy:<exclude>ice/cpp/* <toolset>tidy:<librarydef>boost <toolset>tidy:<librarydef>std + <toolset>tidy:<mapping>iwyu.json ; build-project icespider ; diff --git a/icespider/common/Jamfile.jam b/icespider/common/Jamfile.jam index dc13273..6a60b5f 100644 --- a/icespider/common/Jamfile.jam +++ b/icespider/common/Jamfile.jam @@ -2,18 +2,19 @@ lib adhocutil : : : : <include>/usr/include/adhocutil ; lib slicer : : : : <include>/usr/include/slicer ; obj http : http.ice : <toolset>tidy:<checker>none ; +obj slicer-http : http.ice : <use>slicer <use>adhocutil + <implicit-dependency>http <slicer>pure <toolset>tidy:<checker>none ; obj session : session.ice : <toolset>tidy:<checker>none ; lib icespider-common : [ glob *.cpp ] http session - http.ice + slicer-http : <library>adhocutil <library>..//pthread <library>..//Ice <library>slicer - <slicer>pure <implicit-dependency>http <implicit-dependency>session : : diff --git a/icespider/common/formatters.cpp b/icespider/common/formatters.cpp new file mode 100644 index 0000000..6bf31c0 --- /dev/null +++ b/icespider/common/formatters.cpp @@ -0,0 +1 @@ +#include "formatters.h" diff --git a/icespider/common/maybeString.cpp b/icespider/common/maybeString.cpp new file mode 100644 index 0000000..8dab2cc --- /dev/null +++ b/icespider/common/maybeString.cpp @@ -0,0 +1 @@ +#include "maybeString.h" diff --git a/icespider/common/maybeString.h b/icespider/common/maybeString.h index b760faa..41ca524 100644 --- a/icespider/common/maybeString.h +++ b/icespider/common/maybeString.h @@ -1,21 +1,26 @@ #ifndef ICESPIDER_COMMON_MAYBESTRING_H #define ICESPIDER_COMMON_MAYBESTRING_H +#include <compare> +#include <iosfwd> #include <string> #include <string_view> +#include <type_traits> +#include <utility> #include <variant> namespace IceSpider { class MaybeString { public: - MaybeString() { } + MaybeString() = default; - // NOLINTNEXTLINE(hicpp-explicit-conversions) + // cppcheck-suppress noExplicitConstructor; NOLINTNEXTLINE(hicpp-explicit-conversions) inline MaybeString(std::string s) : value_ {std::move(s)} { } - // NOLINTNEXTLINE(hicpp-explicit-conversions) - inline MaybeString(std::string_view s) : value_ {std::move(s)} { } + // cppcheck-suppress noExplicitConstructor; NOLINTNEXTLINE(hicpp-explicit-conversions) + inline MaybeString(std::string_view s) : value_ {s} { } + // NOLINTNEXTLINE(hicpp-explicit-conversions) [[nodiscard]] inline operator std::string_view() const { if (value_.index() == 0) { diff --git a/icespider/common/pathparts.cpp b/icespider/common/pathparts.cpp index 9318088..654081a 100644 --- a/icespider/common/pathparts.cpp +++ b/icespider/common/pathparts.cpp @@ -1,6 +1,8 @@ #include "pathparts.h" -#include <boost/algorithm/string/split.hpp> -#include <boost/algorithm/string/trim.hpp> +#include <boost/algorithm/string/compare.hpp> +#include <boost/algorithm/string/find_iterator.hpp> +#include <boost/algorithm/string/finder.hpp> +#include <string> namespace ba = boost::algorithm; diff --git a/icespider/common/pathparts.h b/icespider/common/pathparts.h index 2c6aaa9..077386d 100644 --- a/icespider/common/pathparts.h +++ b/icespider/common/pathparts.h @@ -2,6 +2,7 @@ #define ICESPIDER_CORE_PATHS_H #include <c++11Helpers.h> +#include <cstddef> #include <memory> #include <string_view> #include <vector> diff --git a/icespider/compile/Jamfile.jam b/icespider/compile/Jamfile.jam index e481791..47c93e6 100644 --- a/icespider/compile/Jamfile.jam +++ b/icespider/compile/Jamfile.jam @@ -6,12 +6,13 @@ lib stdc++fs ; lib slice-parser ; obj routes : routes.ice : <use>../common//icespider-common <toolset>tidy:<checker>none ; +obj slicer-routes : routes.ice : <use>slicer <use>adhocutil + <implicit-dependency>routes <slicer>pure <toolset>tidy:<checker>none ; lib icespider-compile : routeCompiler.cpp - routes.ice + slicer-routes routes : - <slicer>pure <library>slicer <library>adhocutil <library>slicer-json @@ -26,6 +27,7 @@ lib icespider-compile : <library>stdc++fs <library>../common//icespider-common <library>slice-parser + <include>. ; exe icespider : diff --git a/icespider/compile/main.cpp b/icespider/compile/main.cpp index 180d3f1..2ea668c 100644 --- a/icespider/compile/main.cpp +++ b/icespider/compile/main.cpp @@ -1,7 +1,18 @@ #include "routeCompiler.h" -#include <boost/algorithm/string/split.hpp> +#include <array> +#include <boost/algorithm/string/compare.hpp> +#include <boost/algorithm/string/find_iterator.hpp> +#include <boost/algorithm/string/finder.hpp> +#include <boost/lexical_cast.hpp> #include <boost/program_options.hpp> #include <compileTimeFormatter.h> +#include <cstdlib> +#include <filesystem> +#include <iostream> +#include <string> +#include <string_view> +#include <utility> +#include <vector> namespace po = boost::program_options; using namespace AdHoc::literals; diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp index c2b1731..da4f457 100644 --- a/icespider/compile/routeCompiler.cpp +++ b/icespider/compile/routeCompiler.cpp @@ -1,15 +1,29 @@ #include "routeCompiler.h" +#include "routes.h" +#include <Ice/Optional.h> +#include <IceUtil/Handle.h> #include <Slice/CPlusPlusUtil.h> #include <Slice/Preprocessor.h> +#include <algorithm> +#include <boost/algorithm/string/find_iterator.hpp> #include <boost/algorithm/string/join.hpp> #include <boost/algorithm/string/replace.hpp> +#include <boost/format.hpp> #include <compileTimeFormatter.h> +#include <cstdlib> #include <filesystem> #include <fprintbf.h> +#include <http.h> +#include <list> +#include <memory> #include <pathparts.h> #include <scopeExit.h> #include <slicer/modelPartsTypes.h> +#include <slicer/serializer.h> #include <slicer/slicer.h> +#include <stdexcept> +#include <string_view> +#include <utility> namespace IceSpider { using namespace AdHoc::literals; diff --git a/icespider/compile/routeCompiler.h b/icespider/compile/routeCompiler.h index 45c3ffa..ee388ad 100644 --- a/icespider/compile/routeCompiler.h +++ b/icespider/compile/routeCompiler.h @@ -3,60 +3,61 @@ #include <Ice/BuiltinSequences.h> #include <Slice/Parser.h> +#include <cstdio> #include <filesystem> +#include <map> #include <optional> #include <routes.h> +#include <string> #include <vector> #include <visibility.h> -namespace IceSpider { - namespace Compile { - class DLL_PUBLIC RouteCompiler { - public: - using Units = std::map<std::string, Slice::UnitPtr>; +namespace IceSpider::Compile { + class DLL_PUBLIC RouteCompiler { + public: + using Units = std::map<std::string, Slice::UnitPtr>; - RouteCompiler(); + RouteCompiler(); - [[nodiscard]] RouteConfigurationPtr loadConfiguration(const std::filesystem::path &) const; - [[nodiscard]] Units loadUnits(const RouteConfigurationPtr &) const; + [[nodiscard]] RouteConfigurationPtr loadConfiguration(const std::filesystem::path &) const; + [[nodiscard]] Units loadUnits(const RouteConfigurationPtr &) const; - void applyDefaults(const RouteConfigurationPtr &, const Units & u) const; - void compile(const std::filesystem::path & input, const std::filesystem::path & output) const; + void applyDefaults(const RouteConfigurationPtr &, const Units & u) const; + void compile(const std::filesystem::path & input, const std::filesystem::path & output) const; - std::vector<std::filesystem::path> searchPath; + std::vector<std::filesystem::path> searchPath; - private: - using Proxies = std::map<std::string, int>; + private: + using Proxies = std::map<std::string, int>; #pragma GCC visibility push(hidden) - void processConfiguration(FILE * output, FILE * outputh, const std::string & name, - const RouteConfigurationPtr &, const Units &) const; - void processBases(FILE * output, FILE * outputh, const RouteConfigurationPtr &, const Units &) const; - void processBase(FILE * output, FILE * outputh, const RouteBases::value_type &, const Units &) const; - void processRoutes(FILE * output, const RouteConfigurationPtr &, const Units &) const; - void processRoute(FILE * output, const Routes::value_type &, const Units &) const; - void registerOutputSerializers(FILE * output, const RoutePtr &) const; - [[nodiscard]] Proxies initializeProxies(FILE * output, const RoutePtr &) const; - void declareProxies(FILE * output, const Proxies &) const; - void addSingleOperation(FILE * output, const RoutePtr &, const Slice::OperationPtr &) const; - void addMashupOperations(FILE * output, const RoutePtr &, const Proxies &, const Units &) const; - using ParameterMap = std::map<std::string, Slice::ParamDeclPtr>; - static ParameterMap findParameters(const RoutePtr &, const Units &); - static Slice::OperationPtr findOperation(const std::string &, const Units &); - static Slice::OperationPtr findOperation( - const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); - // using Type = std::pair<Slice::StructPtr, Slice::ClassDeclPtr>; - struct Type { - std::string type; - std::optional<std::string> scoped; - Slice::DataMemberList members; - }; - static Type findType(const std::string &, const Units &); - static std::optional<Type> findType( - const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); -#pragma GCC visibility pop + void processConfiguration(FILE * output, FILE * outputh, const std::string & name, + const RouteConfigurationPtr &, const Units &) const; + void processBases(FILE * output, FILE * outputh, const RouteConfigurationPtr &, const Units &) const; + void processBase(FILE * output, FILE * outputh, const RouteBases::value_type &, const Units &) const; + void processRoutes(FILE * output, const RouteConfigurationPtr &, const Units &) const; + void processRoute(FILE * output, const Routes::value_type &, const Units &) const; + void registerOutputSerializers(FILE * output, const RoutePtr &) const; + [[nodiscard]] Proxies initializeProxies(FILE * output, const RoutePtr &) const; + void declareProxies(FILE * output, const Proxies &) const; + void addSingleOperation(FILE * output, const RoutePtr &, const Slice::OperationPtr &) const; + void addMashupOperations(FILE * output, const RoutePtr &, const Proxies &, const Units &) const; + using ParameterMap = std::map<std::string, Slice::ParamDeclPtr>; + static ParameterMap findParameters(const RoutePtr &, const Units &); + static Slice::OperationPtr findOperation(const std::string &, const Units &); + static Slice::OperationPtr findOperation( + const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); + // using Type = std::pair<Slice::StructPtr, Slice::ClassDeclPtr>; + struct Type { + std::string type; + std::optional<std::string> scoped; + Slice::DataMemberList members; }; - } + static Type findType(const std::string &, const Units &); + static std::optional<Type> findType( + const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); +#pragma GCC visibility pop + }; } #endif diff --git a/icespider/core/core.cpp b/icespider/core/core.cpp index 989dcfb..448c7ec 100644 --- a/icespider/core/core.cpp +++ b/icespider/core/core.cpp @@ -1,11 +1,22 @@ #include "core.h" #include "exceptions.h" +#include "ihttpRequest.h" #include <Ice/Initialize.h> #include <Ice/ObjectAdapter.h> +#include <Ice/PropertiesF.h> +#include <algorithm> +#include <compare> #include <compileTimeFormatter.h> +#include <cstdlib> #include <cxxabi.h> #include <factory.impl.h> #include <filesystem> +#include <http.h> +#include <iostream> +#include <pathparts.h> +#include <set> +#include <string> +#include <typeinfo> INSTANTIATEFACTORY(IceSpider::Plugin, Ice::CommunicatorPtr, Ice::PropertiesPtr); INSTANTIATEPLUGINOF(IceSpider::ErrorHandler); diff --git a/icespider/core/core.h b/icespider/core/core.h index a77ce1a..b2150f8 100644 --- a/icespider/core/core.h +++ b/icespider/core/core.h @@ -3,14 +3,27 @@ #include "irouteHandler.h" #include "util.h" +#include <Ice/BuiltinSequences.h> #include <Ice/Communicator.h> +#include <Ice/Object.h> +#include <Ice/ObjectAdapterF.h> +#include <Ice/Properties.h> +#include <Ice/Proxy.h> +#include <Ice/ProxyF.h> #include <c++11Helpers.h> +#include <exception> +#include <factory.h> // IWYU pragma: keep #include <filesystem> -#include <plugins.h> +#include <memory> +#include <plugins.h> // IWYU pragma: keep +#include <string_view> #include <vector> #include <visibility.h> +// IWYU pragma: no_include "factory.impl.h" namespace IceSpider { + class IHttpRequest; + class DLL_PUBLIC Core { public: using AllRoutes = std::vector<IRouteHandlerCPtr>; diff --git a/icespider/core/exceptions.h b/icespider/core/exceptions.h index 8e3466d..0f1d1e8 100644 --- a/icespider/core/exceptions.h +++ b/icespider/core/exceptions.h @@ -2,6 +2,7 @@ #define ICESPIDER_EXCEPTIONS_H #include "http.h" +#include <string> #include <visibility.h> #define DeclareHttpEx(Name) \ diff --git a/icespider/core/flatMap.cpp b/icespider/core/flatMap.cpp new file mode 100644 index 0000000..b6ad3a6 --- /dev/null +++ b/icespider/core/flatMap.cpp @@ -0,0 +1 @@ +#include "flatMap.h" diff --git a/icespider/core/flatMap.h b/icespider/core/flatMap.h index 1526cdf..8a8cc20 100644 --- a/icespider/core/flatMap.h +++ b/icespider/core/flatMap.h @@ -1,6 +1,12 @@ #ifndef ICESPIDER_CORE_FLATMAP_H #define ICESPIDER_CORE_FLATMAP_H +#include <algorithm> +#include <cstddef> +#include <functional> +#include <iterator> +#include <stdexcept> +#include <string> #include <utility> #include <vector> @@ -39,21 +45,21 @@ namespace IceSpider { } template<typename N> - auto + [[nodiscard]] auto lower_bound(const N & n) const { return std::lower_bound(begin(), end(), n, KeyComp<N> {}); } template<typename N> - auto + [[nodiscard]] auto contains(const N & n) const { return std::binary_search(begin(), end(), n, KeyComp<N> {}); } template<typename N> - auto + [[nodiscard]] auto find(const N & n) const { const auto lb = lower_bound(n); @@ -67,13 +73,14 @@ namespace IceSpider { } template<typename Ex = std::out_of_range, typename N> - const auto & + [[nodiscard]] const auto & at(const N & n) const { if (const auto i = find(n); i != end()) { return i->second; } if constexpr (std::is_constructible_v<Ex, N>) { + // NOLINTNEXTLINE(hicpp-no-array-decay) throw Ex(n); } else { @@ -81,12 +88,12 @@ namespace IceSpider { } } - auto + [[nodiscard]] auto begin() const { return cbegin(); } - auto + [[nodiscard]] auto end() const { return cend(); diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp index 7a72a96..873c96b 100644 --- a/icespider/core/ihttpRequest.cpp +++ b/icespider/core/ihttpRequest.cpp @@ -3,10 +3,18 @@ #include "irouteHandler.h" #include "util.h" #include "xwwwFormUrlEncoded.h" +#include <algorithm> #include <boost/lexical_cast.hpp> -#include <cstdio> +#include <compileTimeFormatter.h> +#include <cstdlib> #include <ctime> #include <formatters.h> +#include <http.h> +#include <memory> +#include <plugins.h> +#include <slicer/modelParts.h> +#include <slicer/serializer.h> +#include <stdexcept> namespace IceSpider { using namespace AdHoc::literals; @@ -16,7 +24,7 @@ namespace IceSpider { Ice::Context IHttpRequest::getContext() const { - return Ice::Context(); + return {}; } Slicer::DeserializerPtr @@ -89,7 +97,7 @@ namespace IceSpider { throw Http400_BadRequest(); } } - accepts.push_back(std::move(a)); + accepts.push_back(a); } std::stable_sort(accepts.begin(), accepts.end(), [](const auto & a, const auto & b) { diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h index f88d81f..a32509a 100644 --- a/icespider/core/ihttpRequest.h +++ b/icespider/core/ihttpRequest.h @@ -3,12 +3,21 @@ #include "exceptions.h" #include <Ice/Current.h> -#include <Ice/Optional.h> -#include <IceUtil/Exception.h> -#include <IceUtil/Optional.h> #include <boost/lexical_cast.hpp> +#include <c++11Helpers.h> +#include <ctime> #include <http.h> +#include <iosfwd> +#include <map> +#include <optional> +#include <slicer/modelParts.h> +#include <slicer/serializer.h> #include <slicer/slicer.h> +#include <string> +#include <string_view> +#include <type_traits> +#include <utility> +#include <vector> #include <visibility.h> namespace IceSpider { @@ -28,6 +37,7 @@ namespace IceSpider { public: explicit IHttpRequest(const Core *); virtual ~IHttpRequest() = default; + SPECIAL_MEMBERS_DEFAULT_MOVE_NO_COPY(IHttpRequest); [[nodiscard]] Ice::Context getContext() const; [[nodiscard]] virtual const PathElements & getRequestPath() const = 0; diff --git a/icespider/core/irouteHandler.cpp b/icespider/core/irouteHandler.cpp index fc49aff..85b49f6 100644 --- a/icespider/core/irouteHandler.cpp +++ b/icespider/core/irouteHandler.cpp @@ -1,7 +1,14 @@ #include "irouteHandler.h" -#include "core.h" +#include "exceptions.h" +#include "routeOptions.h" #include <factory.impl.h> #include <formatters.h> +#include <optional> +#include <pathparts.h> +#include <set> +#include <sstream> +#include <string> +#include <utility> INSTANTIATEFACTORY(IceSpider::IRouteHandler, const IceSpider::Core *); @@ -34,7 +41,7 @@ namespace IceSpider { return {rs.first, rs.second->create(strm)}; } } - return ContentTypeSerializer(); + return {}; } ContentTypeSerializer diff --git a/icespider/core/irouteHandler.h b/icespider/core/irouteHandler.h index 7853c35..c9c09e2 100644 --- a/icespider/core/irouteHandler.h +++ b/icespider/core/irouteHandler.h @@ -1,17 +1,24 @@ #ifndef ICESPIDER_IROUTEHANDLER_H #define ICESPIDER_IROUTEHANDLER_H -#include "exceptions.h" +#include "http.h" #include "ihttpRequest.h" -#include "routeOptions.h" -#include "util.h" +#include "slicer/serializer.h" #include <c++11Helpers.h> -#include <factory.h> +#include <factory.h> // IWYU pragma: keep +#include <iosfwd> +#include <map> +#include <memory> #include <pathparts.h> +#include <string_view> #include <visibility.h> +// IWYU pragma: no_include "factory.impl.h" +// IWYU pragma: no_include <Ice/Comparable.h> +// IWYU pragma: no_include <string> namespace IceSpider { class Core; + class RouteOptions; class DLL_PUBLIC IRouteHandler : public Path { public: @@ -49,10 +56,4 @@ namespace IceSpider { using RouteHandlerFactory = AdHoc::Factory<IRouteHandler, const Core *>; } -#if __cplusplus < 201709 -namespace std { - template<typename T> using remove_cvref = typename std::remove_cv<typename std::remove_reference<T>::type>; -} -#endif - #endif diff --git a/icespider/core/util-test.cpp b/icespider/core/util-test.cpp index 32a7c42..df79fb2 100644 --- a/icespider/core/util-test.cpp +++ b/icespider/core/util-test.cpp @@ -1,4 +1,5 @@ #include "util.h" +#include <string_view> namespace foo ::bar { class really; diff --git a/icespider/core/xwwwFormUrlEncoded.cpp b/icespider/core/xwwwFormUrlEncoded.cpp index 7a785bd..42bbddd 100644 --- a/icespider/core/xwwwFormUrlEncoded.cpp +++ b/icespider/core/xwwwFormUrlEncoded.cpp @@ -1,8 +1,23 @@ #include "xwwwFormUrlEncoded.h" #include "exceptions.h" -#include <Ice/BuiltinSequences.h> +#include <Ice/Config.h> +#include <algorithm> #include <array> +#include <boost/algorithm/string/compare.hpp> +#include <boost/algorithm/string/finder.hpp> #include <boost/lexical_cast.hpp> +#include <cstddef> +#include <cstdint> +#include <factory.h> +#include <istream> +#include <iterator> +#include <limits> +#include <maybeString.h> +#include <memory> +#include <optional> +#include <slicer/modelParts.h> +#include <slicer/serializer.h> +#include <utility> namespace ba = boost::algorithm; using namespace std::literals; diff --git a/icespider/core/xwwwFormUrlEncoded.h b/icespider/core/xwwwFormUrlEncoded.h index 6c266b6..d4b11f3 100644 --- a/icespider/core/xwwwFormUrlEncoded.h +++ b/icespider/core/xwwwFormUrlEncoded.h @@ -1,10 +1,16 @@ #ifndef ICESPIDER_CGI_XWWWFORMURLENCODED_H #define ICESPIDER_CGI_XWWWFORMURLENCODED_H -#include <boost/algorithm/string/split.hpp> +#include <boost/algorithm/string/find_iterator.hpp> +#include <functional> +#include <iosfwd> #include <maybeString.h> +#include <slicer/modelParts.h> #include <slicer/serializer.h> +#include <string> +#include <string_view> #include <visibility.h> +// IWYU pragma: no_forward_declare boost::algorithm::split_iterator namespace IceSpider { class XWwwFormUrlEncoded : public Slicer::Deserializer { diff --git a/icespider/fcgi/cgiRequest.cpp b/icespider/fcgi/cgiRequest.cpp index 2158956..d416280 100644 --- a/icespider/fcgi/cgiRequest.cpp +++ b/icespider/fcgi/cgiRequest.cpp @@ -1,4 +1,5 @@ #include "cgiRequest.h" +#include <iostream> namespace IceSpider { CgiRequest::CgiRequest(Core * c, int argc, char ** argv, char ** env) : CgiRequestBase(c, env) diff --git a/icespider/fcgi/cgiRequest.h b/icespider/fcgi/cgiRequest.h index c78f76e..bae6db0 100644 --- a/icespider/fcgi/cgiRequest.h +++ b/icespider/fcgi/cgiRequest.h @@ -2,8 +2,11 @@ #define ICESPIDER_CGI_CGIREQUEST_H #include "cgiRequestBase.h" +#include <iosfwd> namespace IceSpider { + class Core; + class CgiRequest : public CgiRequestBase { public: CgiRequest(Core * c, int argc, char ** argv, char ** env); diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp index fbb195d..108f2ce 100644 --- a/icespider/fcgi/cgiRequestBase.cpp +++ b/icespider/fcgi/cgiRequestBase.cpp @@ -1,13 +1,20 @@ #include "cgiRequestBase.h" #include "xwwwFormUrlEncoded.h" -#include <boost/algorithm/string/case_conv.hpp> #include <boost/algorithm/string/classification.hpp> +#include <boost/algorithm/string/constants.hpp> +#include <boost/algorithm/string/find_iterator.hpp> #include <boost/algorithm/string/predicate.hpp> #include <boost/algorithm/string/split.hpp> +#include <compileTimeFormatter.h> +#include <exceptions.h> +#include <flatMap.h> #include <formatters.h> +#include <ihttpRequest.h> +#include <maybeString.h> #include <slicer/common.h> #include <slicer/modelPartsTypes.h> -#include <util.h> +#include <utility> +#include <vector> namespace ba = boost::algorithm; using namespace std::literals; diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h index fdc82d7..32cdca3 100644 --- a/icespider/fcgi/cgiRequestBase.h +++ b/icespider/fcgi/cgiRequestBase.h @@ -1,14 +1,18 @@ #ifndef ICESPIDER_CGI_CGIREQUESTBASE_H #define ICESPIDER_CGI_CGIREQUESTBASE_H +#include "http.h" #include <case_less.h> -#include <core.h> #include <flatMap.h> #include <ihttpRequest.h> +#include <iosfwd> #include <maybeString.h> #include <string_view> +// IWYU pragma: no_forward_declare AdHoc::case_less namespace IceSpider { + class Core; + class CgiRequestBase : public IHttpRequest { protected: CgiRequestBase(Core * c, const char * const * const env); diff --git a/icespider/fcgi/fcgiRequest.h b/icespider/fcgi/fcgiRequest.h index 58ffc0a..c77bb68 100644 --- a/icespider/fcgi/fcgiRequest.h +++ b/icespider/fcgi/fcgiRequest.h @@ -2,9 +2,13 @@ #define ICESPIDER_CGI_FCGIREQUEST_H #include "cgiRequestBase.h" +#include <fcgiapp.h> #include <fcgio.h> +#include <iosfwd> namespace IceSpider { + class Core; + class FcgiRequest : public CgiRequestBase { public: FcgiRequest(Core * c, FCGX_Request * r); diff --git a/icespider/fcgi/main.cpp b/icespider/fcgi/main.cpp index 8402501..b4b9052 100644 --- a/icespider/fcgi/main.cpp +++ b/icespider/fcgi/main.cpp @@ -1,6 +1,8 @@ #include "cgiRequest.h" -#include "core.h" #include "fcgiRequest.h" +#include <core.h> +#include <fcgiapp.h> +#include <http.h> #include <visibility.h> using namespace IceSpider; diff --git a/icespider/fileSessions/fileSessions.cpp b/icespider/fileSessions/fileSessions.cpp index afbb18d..6818410 100644 --- a/icespider/fileSessions/fileSessions.cpp +++ b/icespider/fileSessions/fileSessions.cpp @@ -1,18 +1,29 @@ -#include "Ice/Initialize.h" +#include <Ice/Communicator.h> +#include <Ice/Config.h> +#include <Ice/Current.h> #include <Ice/InputStream.h> #include <Ice/OutputStream.h> -#include <boost/uuid/uuid_generators.hpp> +#include <Ice/Properties.h> +#include <Ice/PropertiesF.h> +#include <boost/lexical_cast.hpp> +#include <boost/uuid/random_generator.hpp> #include <boost/uuid/uuid_io.hpp> +#include <cerrno> #include <core.h> +#include <cstring> +#include <ctime> +#include <exception> #include <factory.impl.h> -#include <fcntl.h> #include <fileUtils.h> -#include <filesystem> +#include <ios> +#include <memory> #include <session.h> +#include <string> +#include <string_view> #include <sys.h> #include <sys/file.h> -#include <sys/mman.h> -#include <sys/stat.h> +#include <unistd.h> +#include <utility> namespace IceSpider { class FileSessions : public Plugin, public SessionManager { diff --git a/icespider/testing/testRequest.cpp b/icespider/testing/testRequest.cpp index c384b31..e522bc1 100644 --- a/icespider/testing/testRequest.cpp +++ b/icespider/testing/testRequest.cpp @@ -1,7 +1,15 @@ #include "testRequest.h" +#include <array> #include <boost/algorithm/string/classification.hpp> +#include <boost/algorithm/string/constants.hpp> +#include <boost/algorithm/string/find_iterator.hpp> +#include <boost/algorithm/string/predicate_facade.hpp> #include <boost/algorithm/string/split.hpp> +#include <cstdio> #include <formatters.h> +#include <http.h> +#include <ihttpRequest.h> +#include <utility> namespace IceSpider { constexpr std::string_view slash("/"); diff --git a/icespider/testing/testRequest.h b/icespider/testing/testRequest.h index 4d93197..0258572 100644 --- a/icespider/testing/testRequest.h +++ b/icespider/testing/testRequest.h @@ -1,10 +1,18 @@ #ifndef ICESPIDER_TESTING_TESTREQUEST_H #define ICESPIDER_TESTING_TESTREQUEST_H +#include <functional> +#include <http.h> #include <ihttpRequest.h> +#include <iosfwd> +#include <map> +#include <string> +#include <string_view> #include <visibility.h> namespace IceSpider { + class Core; + class DLL_PUBLIC TestRequest : public IHttpRequest { public: using MapVars = std::map<std::string, std::string, std::less<>>; diff --git a/icespider/unittests/Jamfile.jam b/icespider/unittests/Jamfile.jam index bc84b6d..16cb1e6 100644 --- a/icespider/unittests/Jamfile.jam +++ b/icespider/unittests/Jamfile.jam @@ -52,6 +52,8 @@ run <implicit-dependency>../compile//icespider-compile <include>. <implicit-dependency>test-api-lib + <variant>san:<testing.launcher>LSAN_OPTIONS=suppressions=$(me)/leak.suppressions + <variant>san:<dependency>$(me)/leak.suppressions : testCompile : ; @@ -121,11 +123,16 @@ run obj test-fcgi : test-fcgi.ice : <toolset>tidy:<checker>none ; run testFcgi.cpp - test-fcgi.ice + [ obj slicer-test-fcgi : test-fcgi.ice : + <slicer>pure + <use>slicer + <use>adhocutil + <include>. + <implicit-dependency>test-fcgi + <toolset>tidy:<checker>none ] test-fcgi ../fcgi/cgiRequestBase.cpp : : : - <slicer>pure <define>BOOST_TEST_DYN_LINK <library>testCommon <library>../common//icespider-common @@ -155,11 +162,16 @@ run obj test-api : test-api.ice : <include>. <toolset>tidy:<checker>none ; lib test-api-lib : - test-api.ice + [ obj slicer-test-api : test-api.ice : + <slicer>pure + <use>slicer + <use>adhocutil + <include>. + <implicit-dependency>test-api + <toolset>tidy:<checker>none ] test-api-impl.cpp test-api : - <slicer>pure <library>slicer <library>adhocutil <library>..//pthread @@ -172,4 +184,5 @@ run testFlatMap.cpp : : : <library>boost_utf <define>BOOST_TEST_DYN_LINK <use>../core//icespider-core + <toolset>tidy:<xcheckxx>hicpp-vararg ; diff --git a/icespider/unittests/base2.cpp b/icespider/unittests/base2.cpp index a64d46b..6936252 100644 --- a/icespider/unittests/base2.cpp +++ b/icespider/unittests/base2.cpp @@ -1,4 +1,5 @@ #include "base2.h" +#include "test-api.h" namespace common { base2::base2(const IceSpider::Core *) { } diff --git a/icespider/unittests/base2.h b/icespider/unittests/base2.h index d0ad75c..0082b4f 100644 --- a/icespider/unittests/base2.h +++ b/icespider/unittests/base2.h @@ -2,11 +2,15 @@ #define ICESPIDER_TEST_BASE2_H // Standard headers. -#include <core.h> -#include <irouteHandler.h> +#include <visibility.h> // Interface headers. -#include <test-api.h> +#include "test-api.h" + +namespace IceSpider { + class Core; + class IHttpRequest; +} namespace common { // Base classes. diff --git a/icespider/unittests/leak.suppressions b/icespider/unittests/leak.suppressions new file mode 100644 index 0000000..5a2035c --- /dev/null +++ b/icespider/unittests/leak.suppressions @@ -0,0 +1 @@ +leak:libmcpp.so diff --git a/icespider/unittests/test-api-impl.cpp b/icespider/unittests/test-api-impl.cpp index bcf32ed..bcde5c5 100644 --- a/icespider/unittests/test-api-impl.cpp +++ b/icespider/unittests/test-api-impl.cpp @@ -1,3 +1,5 @@ +#include <iosfwd> +#include <string> #include <test-api.h> void diff --git a/icespider/unittests/testAccept.cpp b/icespider/unittests/testAccept.cpp index 7719d56..cacb01e 100644 --- a/icespider/unittests/testAccept.cpp +++ b/icespider/unittests/testAccept.cpp @@ -2,8 +2,14 @@ #include <boost/test/data/test_case.hpp> #include <boost/test/unit_test.hpp> -#include <exceptions.h> #include <ihttpRequest.h> +#include <optional> +#include <ostream> +#include <string_view> +#include <vector> +namespace IceSpider { + class Http400_BadRequest; +} auto parse = IceSpider::IHttpRequest::parseAccept; using namespace boost::unit_test::data; diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp index 1ce26f4..d6a4a28 100644 --- a/icespider/unittests/testApp.cpp +++ b/icespider/unittests/testApp.cpp @@ -1,24 +1,40 @@ #define BOOST_TEST_MODULE TestApp #include <boost/test/unit_test.hpp> +#include <Ice/Communicator.h> +#include <Ice/Config.h> #include <Ice/Initialize.h> #include <Ice/ObjectAdapter.h> -#include <boost/algorithm/string/classification.hpp> +#include <Ice/Optional.h> +#include <Ice/Properties.h> +#include <Ice/PropertiesF.h> #include <boost/algorithm/string/predicate.hpp> -#include <boost/algorithm/string/split.hpp> #include <core.h> #include <definedDirs.h> +#include <exception> #include <exceptions.h> #include <factory.impl.h> #include <filesystem> +#include <http.h> +#include <ihttpRequest.h> #include <irouteHandler.h> #include <json/serializer.h> +#include <libxml++/document.h> +#include <libxml++/nodes/element.h> #include <libxml++/parsers/domparser.h> -#include <safeMapFind.h> +#include <map> +#include <memory> +#include <set> #include <slicer/slicer.h> +#include <slicer/xml/serializer.h> +#include <sstream> +#include <string> +#include <string_view> #include <test-api.h> #include <testRequest.h> -#include <xml/serializer.h> +namespace Ice { + struct Current; +} using namespace IceSpider; diff --git a/icespider/unittests/testCompile.cpp b/icespider/unittests/testCompile.cpp index fa16de3..402143f 100644 --- a/icespider/unittests/testCompile.cpp +++ b/icespider/unittests/testCompile.cpp @@ -1,13 +1,21 @@ #define BOOST_TEST_MODULE TestCompile #include <boost/test/unit_test.hpp> -#include "../compile/routeCompiler.h" -#include "../core/irouteHandler.h" -#include <boost/algorithm/string/join.hpp> +#include <Ice/Optional.h> +#include <IceUtil/Handle.h> +#include <Slice/Parser.h> #include <definedDirs.h> -#include <dlfcn.h> -#include <plugins.h> +#include <filesystem> +#include <http.h> +#include <iosfwd> +#include <map> +#include <memory> +#include <routeCompiler.h> +#include <routes.h> #include <slicer/modelPartsTypes.h> +#include <string> +#include <utility> +#include <vector> using namespace IceSpider; diff --git a/icespider/unittests/testFcgi.cpp b/icespider/unittests/testFcgi.cpp index cc9aa44..5b1ac5b 100644 --- a/icespider/unittests/testFcgi.cpp +++ b/icespider/unittests/testFcgi.cpp @@ -1,11 +1,31 @@ #define BOOST_TEST_MODULE TestApp #include <boost/test/unit_test.hpp> +#include <Ice/Config.h> +#include <boost/lexical_cast.hpp> #include <cgiRequestBase.h> #include <core.h> -#include <definedDirs.h> +#include <cstdlib> +#include <cstring> +#include <ctime> +#include <http.h> +#include <ihttpRequest.h> +#include <iostream> +#include <map> +#include <memory> +#include <optional> #include <slicer/modelPartsTypes.h> +#include <string> +#include <string_view> #include <test-fcgi.h> +#include <vector> + +namespace IceSpider { + class Http400_BadRequest; +} +namespace IceSpider { + class Http405_MethodNotAllowed; +} using namespace std::literals; namespace std { @@ -96,7 +116,7 @@ public: } // NOLINTNEXTLINE(hicpp-explicit-conversions) - operator char * *() + operator char **() { return &front(); } diff --git a/icespider/unittests/testFileSessions.cpp b/icespider/unittests/testFileSessions.cpp index 3712d03..2470363 100644 --- a/icespider/unittests/testFileSessions.cpp +++ b/icespider/unittests/testFileSessions.cpp @@ -1,11 +1,19 @@ #define BOOST_TEST_MODULE TestFileSessions #include <boost/test/unit_test.hpp> -#include <Ice/Initialize.h> +#include <Ice/Communicator.h> #include <Ice/Properties.h> +#include <Ice/Proxy.h> #include <core.h> +#include <ctime> #include <definedDirs.h> +#include <filesystem> +#include <map> +#include <memory> #include <session.h> +#include <string> +#include <string_view> +#include <unistd.h> BOOST_TEST_DONT_PRINT_LOG_VALUE(IceSpider::Variables); diff --git a/icespider/unittests/testFlatMap.cpp b/icespider/unittests/testFlatMap.cpp index 3995cc9..ed19371 100644 --- a/icespider/unittests/testFlatMap.cpp +++ b/icespider/unittests/testFlatMap.cpp @@ -2,6 +2,10 @@ #include <boost/test/unit_test.hpp> #include <flatMap.h> +#include <stdexcept> +#include <string_view> +#include <utility> +#include <vector> using TM = IceSpider::flatmap<std::string_view, int>; @@ -28,7 +32,7 @@ BOOST_AUTO_TEST_CASE(single) BOOST_CHECK(contains("a")); BOOST_CHECK_EQUAL(at("a"), 1); BOOST_CHECK(!contains("b")); - BOOST_CHECK_THROW(at("b"), std::out_of_range); + BOOST_CHECK_THROW((void)at("b"), std::out_of_range); BOOST_CHECK_EQUAL(begin()->first, "a"); BOOST_CHECK_EQUAL(begin()->second, 1); BOOST_CHECK_EQUAL(find("a"), begin()); @@ -86,7 +90,7 @@ BOOST_AUTO_TEST_CASE(several) BOOST_CHECK(contains(1)); BOOST_CHECK_EQUAL(at(1), "a"); BOOST_CHECK(!contains(2)); - BOOST_CHECK_THROW(at(2), std::out_of_range); + BOOST_CHECK_THROW((void)at(2), std::out_of_range); BOOST_CHECK(contains(3)); BOOST_CHECK(contains(6)); BOOST_CHECK_EQUAL(begin()->first, 1); diff --git a/icespider/xslt/exslt.cpp b/icespider/xslt/exslt-init.cpp index 186c77a..d4489e7 100644 --- a/icespider/xslt/exslt.cpp +++ b/icespider/xslt/exslt-init.cpp @@ -1,5 +1,6 @@ #include <libexslt/exslt.h> -#include <libxslt/transform.h> +#include <libxml/parser.h> +#include <libxslt/xslt.h> static void initLibXml() __attribute__((constructor(102))); void diff --git a/icespider/xslt/xsltStreamSerializer.cpp b/icespider/xslt/xsltStreamSerializer.cpp index c2d2136..e210685 100644 --- a/icespider/xslt/xsltStreamSerializer.cpp +++ b/icespider/xslt/xsltStreamSerializer.cpp @@ -1,9 +1,19 @@ #include "xsltStreamSerializer.h" -#include <factory.impl.h> +#include <chrono> #include <filesystem> #include <libxml++/document.h> +#include <libxml++/exceptions/exception.h> #include <libxml/HTMLtree.h> +#include <libxml/tree.h> +#include <libxml/xmlIO.h> +#include <libxml/xmlstring.h> +#include <libxslt/transform.h> #include <libxslt/xsltInternals.h> +#include <memory> +#include <ostream> +#include <slicer/modelParts.h> +#include <slicer/serializer.h> +#include <slicer/xml/serializer.h> namespace IceSpider { static int diff --git a/icespider/xslt/xsltStreamSerializer.h b/icespider/xslt/xsltStreamSerializer.h index a21f424..429b73c 100644 --- a/icespider/xslt/xsltStreamSerializer.h +++ b/icespider/xslt/xsltStreamSerializer.h @@ -3,9 +3,15 @@ #include <c++11Helpers.h> #include <filesystem> -#include <libxslt/transform.h> +#include <iosfwd> +#include <libxslt/xsltInternals.h> +#include <slicer/modelParts.h> +#include <slicer/serializer.h> #include <slicer/xml/serializer.h> #include <visibility.h> +namespace xmlpp { + class Document; +} namespace IceSpider { class DLL_PUBLIC XsltStreamSerializer : public Slicer::XmlDocumentSerializer { diff --git a/iwyu.json b/iwyu.json new file mode 100644 index 0000000..56b0ffa --- /dev/null +++ b/iwyu.json @@ -0,0 +1,293 @@ +[ + { + "symbol": [ + "Glib::ustring", + "private", + "<glibmm/ustring.h>", + "public" + ] + }, + { + "symbol": [ + "@u?int\\d\\+_t", + "private", + "<cstdint>", + "public" + ] + }, + { + "symbol": [ + "tm", + "private", + "<ctime>", + "public" + ] + }, + { + "symbol": [ + "boost::posix_time::time_duration", + "private", + "<boost/date_time/posix_time/posix_time.hpp>", + "public" + ] + }, + { + "include": [ + "<bits/types/stack_t.h>", + "private", + "<ucontext.h>", + "public" + ] + }, + { + "include": [ + "@.field_types.h.", + "private", + "<mysql.h>", + "public" + ] + }, + { + "include": [ + "@.mysql_time.h.", + "private", + "<mysql.h>", + "public" + ] + }, + { + "symbol": [ + "free", + "private", + "<cstdlib>", + "public" + ] + }, + { + "include": [ + "<boost/cstdint.hpp>", + "private", + "<cstdint>", + "public" + ] + }, + { + "include": [ + "<ext/alloc_traits.h>", + "private", + "<memory>", + "public" + ] + }, + { + "include": [ + "<bits/struct_stat.h>", + "private", + "<sys/stat.h>", + "public" + ] + }, + { + "include": [ + "<bits/exception.h>", + "private", + "<stdexcept>", + "public" + ] + }, + { + "include": [ + "@<boost/test/(unit_test_suite|framework).hpp>", + "private", + "<boost/test/unit_test.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/test/(utils|tools|tree)/.*>", + "private", + "<boost/test/unit_test.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/format/(format_(class|implementation)|alt_sstream).hpp>", + "private", + "<boost/format.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/test/data/.*>", + "private", + "<boost/test/data/test_case.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/mpl/.*>", + "private", + "<boost/mpl/list.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/iostreams/detail/.*>", + "private", + "<boost/iostreams/stream.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/date_time/gregorian/.*>", + "private", + "<boost/date_time/gregorian_calendar.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/date_time/time_.*>", + "private", + "<boost/date_time/time.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/date_time/posix_time/posix_time_.*>", + "private", + "<boost/date_time/posix_time/posix_time.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/date_time/posix_time/(ptime|conversion|time_(formatt|pars)ers).hpp>", + "private", + "<boost/date_time/posix_time/posix_time.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/preprocessor/.*>", + "private", + "<boost/test/unit_test.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/lexical_cast/.*>", + "private", + "<boost/lexical_cast.hpp>", + "public" + ] + }, + { + "include": [ + "<boost/algorithm/string/detail/finder.hpp>", + "private", + "<boost/algorithm/string/finder.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/program_options/.*>", + "private", + "<boost/program_options.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/multi_index/detail/index.*>", + "private", + "<boost/multi_index/ordered_index.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/multi_index/detail/ord.*>", + "private", + "<boost/multi_index/ordered_index.hpp>", + "public" + ] + }, + { + "symbol": [ + "std::filesystem", + "private", + "<filesystem>", + "public" + ] + }, + { + "include": [ + "@<boost/multi_index/detail/bidir.*>", + "private", + "<boost/multi_index_container.hpp>", + "public" + ] + }, + { + "include": [ + "<boost/algorithm/string/detail/classification.hpp>", + "private", + "<boost/algorithm/string/classification.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/range/.*\\.hpp>", + "private", + "<boost/algorithm/string/find_iterator.hpp>", + "public" + ] + }, + { + "include": [ + "@<boost/iterator/.*\\.hpp>", + "private", + "<boost/algorithm/string/find_iterator.hpp>", + "public" + ] + }, + { + "include": [ + "<boost/detail/basic_pointerbuf.hpp>", + "private", + "<boost/lexical_cast.hpp>", + "public" + ] + }, + { + "include": [ + "<boost/detail/basic_pointerbuf.hpp>", + "private", + "<boost/lexical_cast.hpp>", + "public" + ] + }, + { + "include": [ + "<boost/algorithm/string/detail/find_iterator.hpp>", + "private", + "<boost/algorithm/string/find_iterator.hpp>", + "public" + ] + }, + { + "ref": "/usr/lib/llvm/13/share/include-what-you-use/boost-all-private.imp" + } +] |