From ec8c65386ea0121b80970ccd6ca6cb622a23c040 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 6 Feb 2022 14:37:15 +0000 Subject: Fix all non-unittest warnings --- Jamroot.jam | 4 +- icespider/common/Jamfile.jam | 5 +- icespider/common/formatters.cpp | 1 + icespider/common/maybeString.cpp | 1 + icespider/common/maybeString.h | 13 +- icespider/common/pathparts.cpp | 6 +- icespider/common/pathparts.h | 1 + icespider/compile/Jamfile.jam | 6 +- icespider/compile/main.cpp | 13 +- icespider/compile/routeCompiler.cpp | 14 ++ icespider/compile/routeCompiler.h | 81 ++++----- icespider/core/core.cpp | 11 ++ icespider/core/core.h | 15 +- icespider/core/exceptions.h | 1 + icespider/core/flatMap.cpp | 1 + icespider/core/flatMap.h | 19 +- icespider/core/ihttpRequest.cpp | 14 +- icespider/core/ihttpRequest.h | 16 +- icespider/core/irouteHandler.cpp | 11 +- icespider/core/irouteHandler.h | 21 +-- icespider/core/util-test.cpp | 1 + icespider/core/xwwwFormUrlEncoded.cpp | 17 +- icespider/core/xwwwFormUrlEncoded.h | 8 +- icespider/fcgi/cgiRequest.cpp | 1 + icespider/fcgi/cgiRequest.h | 3 + icespider/fcgi/cgiRequestBase.cpp | 11 +- icespider/fcgi/cgiRequestBase.h | 6 +- icespider/fcgi/fcgiRequest.h | 4 + icespider/fcgi/main.cpp | 4 +- icespider/fileSessions/fileSessions.cpp | 23 ++- icespider/testing/testRequest.cpp | 8 + icespider/testing/testRequest.h | 8 + icespider/unittests/Jamfile.jam | 21 ++- icespider/unittests/base2.cpp | 1 + icespider/unittests/base2.h | 10 +- icespider/unittests/leak.suppressions | 1 + icespider/unittests/test-api-impl.cpp | 2 + icespider/unittests/testAccept.cpp | 8 +- icespider/unittests/testApp.cpp | 24 ++- icespider/unittests/testCompile.cpp | 18 +- icespider/unittests/testFcgi.cpp | 24 ++- icespider/unittests/testFileSessions.cpp | 10 +- icespider/unittests/testFlatMap.cpp | 8 +- icespider/xslt/exslt-init.cpp | 21 +++ icespider/xslt/exslt.cpp | 20 --- icespider/xslt/xsltStreamSerializer.cpp | 12 +- icespider/xslt/xsltStreamSerializer.h | 8 +- iwyu.json | 293 +++++++++++++++++++++++++++++++ 48 files changed, 696 insertions(+), 133 deletions(-) create mode 100644 icespider/common/formatters.cpp create mode 100644 icespider/common/maybeString.cpp create mode 100644 icespider/core/flatMap.cpp create mode 100644 icespider/unittests/leak.suppressions create mode 100644 icespider/xslt/exslt-init.cpp delete mode 100644 icespider/xslt/exslt.cpp create mode 100644 iwyu.json diff --git a/Jamroot.jam b/Jamroot.jam index de7cae6..5a6f3b3 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -33,6 +33,7 @@ project coverage:on tidy:boost-* tidy:bugprone-* + tidy:bugprone-easily-swappable-parameters tidy:clang-* tidy:misc-* tidy:misc-non-private-member-variables-in-classes @@ -43,13 +44,14 @@ project tidy:performance-* tidy:common/bin/http.h tidy:common/bin/session.h - tidy:cxxstd-17-iso/routes.h + tidy:cxxstd-20-iso/routes.h tidy:core/bin/routeOptions.h tidy:unittests/bin/test-api.h tidy:unittests/bin/test-fcgi.h tidy:ice/cpp/* tidy:boost tidy:std + tidy: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 : : : : /usr/include/adhocutil ; lib slicer : : : : /usr/include/slicer ; obj http : http.ice : tidy:none ; +obj slicer-http : http.ice : slicer adhocutil + http pure tidy:none ; obj session : session.ice : tidy:none ; lib icespider-common : [ glob *.cpp ] http session - http.ice + slicer-http : adhocutil ..//pthread ..//Ice slicer - pure http 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 +#include #include #include +#include +#include #include 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 -#include +#include +#include +#include +#include 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 +#include #include #include #include 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 : ../common//icespider-common tidy:none ; +obj slicer-routes : routes.ice : slicer adhocutil + routes pure tidy:none ; lib icespider-compile : routeCompiler.cpp - routes.ice + slicer-routes routes : - pure slicer adhocutil slicer-json @@ -26,6 +27,7 @@ lib icespider-compile : stdc++fs ../common//icespider-common slice-parser + . ; 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 +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include 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 +#include #include #include +#include +#include #include #include +#include #include +#include #include #include +#include +#include +#include #include #include #include +#include #include +#include +#include +#include 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 #include +#include #include +#include #include #include +#include #include #include -namespace IceSpider { - namespace Compile { - class DLL_PUBLIC RouteCompiler { - public: - using Units = std::map; +namespace IceSpider::Compile { + class DLL_PUBLIC RouteCompiler { + public: + using Units = std::map; - 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 searchPath; + std::vector searchPath; - private: - using Proxies = std::map; + private: + using Proxies = std::map; #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; - 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; - struct Type { - std::string type; - std::optional scoped; - Slice::DataMemberList members; - }; - static Type findType(const std::string &, const Units &); - static std::optional 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; + 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; + struct Type { + std::string type; + std::optional scoped; + Slice::DataMemberList members; }; - } + static Type findType(const std::string &, const Units &); + static std::optional 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 #include +#include +#include +#include #include +#include #include #include #include +#include +#include +#include +#include +#include +#include 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 #include +#include +#include +#include +#include +#include #include +#include +#include // IWYU pragma: keep #include -#include +#include +#include // IWYU pragma: keep +#include #include #include +// IWYU pragma: no_include "factory.impl.h" namespace IceSpider { + class IHttpRequest; + class DLL_PUBLIC Core { public: using AllRoutes = std::vector; 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 #include #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 +#include +#include +#include +#include +#include #include #include @@ -39,21 +45,21 @@ namespace IceSpider { } template - auto + [[nodiscard]] auto lower_bound(const N & n) const { return std::lower_bound(begin(), end(), n, KeyComp {}); } template - auto + [[nodiscard]] auto contains(const N & n) const { return std::binary_search(begin(), end(), n, KeyComp {}); } template - auto + [[nodiscard]] auto find(const N & n) const { const auto lb = lower_bound(n); @@ -67,13 +73,14 @@ namespace IceSpider { } template - 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) { + // 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 #include -#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include 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 -#include -#include -#include #include +#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include 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 #include +#include +#include +#include +#include +#include +#include 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 -#include +#include // IWYU pragma: keep +#include +#include +#include #include +#include #include +// IWYU pragma: no_include "factory.impl.h" +// IWYU pragma: no_include +// IWYU pragma: no_include namespace IceSpider { class Core; + class RouteOptions; class DLL_PUBLIC IRouteHandler : public Path { public: @@ -49,10 +56,4 @@ namespace IceSpider { using RouteHandlerFactory = AdHoc::Factory; } -#if __cplusplus < 201709 -namespace std { - template using remove_cvref = typename std::remove_cv::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 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 +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include 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 +#include +#include +#include #include +#include #include +#include +#include #include +// 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 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 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 #include +#include +#include #include #include +#include +#include +#include #include +#include +#include #include #include -#include +#include +#include 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 -#include #include #include +#include #include #include +// 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 #include +#include 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 +#include +#include #include 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 +#include +#include #include #include -#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include -#include #include -#include +#include +#include #include +#include +#include #include #include -#include -#include +#include +#include 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 #include +#include +#include +#include #include +#include #include +#include +#include +#include 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 +#include #include +#include +#include +#include +#include #include namespace IceSpider { + class Core; + class DLL_PUBLIC TestRequest : public IHttpRequest { public: using MapVars = std::map>; 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 ../compile//icespider-compile . test-api-lib + san:LSAN_OPTIONS=suppressions=$(me)/leak.suppressions + san:$(me)/leak.suppressions : testCompile : ; @@ -121,11 +123,16 @@ run obj test-fcgi : test-fcgi.ice : tidy:none ; run testFcgi.cpp - test-fcgi.ice + [ obj slicer-test-fcgi : test-fcgi.ice : + pure + slicer + adhocutil + . + test-fcgi + tidy:none ] test-fcgi ../fcgi/cgiRequestBase.cpp : : : - pure BOOST_TEST_DYN_LINK testCommon ../common//icespider-common @@ -155,11 +162,16 @@ run obj test-api : test-api.ice : . tidy:none ; lib test-api-lib : - test-api.ice + [ obj slicer-test-api : test-api.ice : + pure + slicer + adhocutil + . + test-api + tidy:none ] test-api-impl.cpp test-api : - pure slicer adhocutil ..//pthread @@ -172,4 +184,5 @@ run testFlatMap.cpp : : : boost_utf BOOST_TEST_DYN_LINK ../core//icespider-core + tidy: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 -#include +#include // Interface headers. -#include +#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 +#include #include 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 #include -#include #include +#include +#include +#include +#include +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 +#include +#include #include #include -#include +#include +#include +#include #include -#include #include #include +#include #include #include #include +#include +#include #include #include +#include +#include #include -#include +#include +#include +#include #include +#include +#include +#include +#include #include #include -#include +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 -#include "../compile/routeCompiler.h" -#include "../core/irouteHandler.h" -#include +#include +#include +#include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include 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 +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include + +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 -#include +#include #include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include 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 #include +#include +#include +#include +#include using TM = IceSpider::flatmap; @@ -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-init.cpp b/icespider/xslt/exslt-init.cpp new file mode 100644 index 0000000..d4489e7 --- /dev/null +++ b/icespider/xslt/exslt-init.cpp @@ -0,0 +1,21 @@ +#include +#include +#include + +static void initLibXml() __attribute__((constructor(102))); +void +initLibXml() +{ + xmlInitParser(); + exsltRegisterAll(); +} + +// LCOV_EXCL_START lcov actually misses destructor functions +static void cleanupLibXml() __attribute__((destructor(102))); +void +cleanupLibXml() +{ + xsltCleanupGlobals(); + xmlCleanupParser(); +} +// LCOV_EXCL_STOP diff --git a/icespider/xslt/exslt.cpp b/icespider/xslt/exslt.cpp deleted file mode 100644 index 186c77a..0000000 --- a/icespider/xslt/exslt.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -static void initLibXml() __attribute__((constructor(102))); -void -initLibXml() -{ - xmlInitParser(); - exsltRegisterAll(); -} - -// LCOV_EXCL_START lcov actually misses destructor functions -static void cleanupLibXml() __attribute__((destructor(102))); -void -cleanupLibXml() -{ - xsltCleanupGlobals(); - xmlCleanupParser(); -} -// LCOV_EXCL_STOP 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 +#include #include #include +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include 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 #include -#include +#include +#include +#include +#include #include #include +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", + "", + "public" + ] + }, + { + "symbol": [ + "@u?int\\d\\+_t", + "private", + "", + "public" + ] + }, + { + "symbol": [ + "tm", + "private", + "", + "public" + ] + }, + { + "symbol": [ + "boost::posix_time::time_duration", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "@.field_types.h.", + "private", + "", + "public" + ] + }, + { + "include": [ + "@.mysql_time.h.", + "private", + "", + "public" + ] + }, + { + "symbol": [ + "free", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "symbol": [ + "std::filesystem", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "@", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "include": [ + "", + "private", + "", + "public" + ] + }, + { + "ref": "/usr/lib/llvm/13/share/include-what-you-use/boost-all-private.imp" + } +] -- cgit v1.2.3