Skip to content

Commit

Permalink
cppcheck fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
COM8 committed Feb 8, 2025
1 parent 75e15c8 commit 9c66a3d
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 29 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/cppcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:
- name: "[Release g++] Build"
env:
CPR_ENABLE_CPPCHECK: ON
# Avoid parallel runs so only the resulting error file is not being written by multiple processes at the same time.
CMAKE_BUILD_PARALLEL_LEVEL: 1
uses: ashutoshvarma/action-cmake-build@master
with:
build-dir: ${{github.workspace}}/build
Expand Down
28 changes: 26 additions & 2 deletions cppcheck-suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,33 @@
<id>*</id>
<fileName>*/build/*</fileName>
</suppress>

<!-- False positive? -->
<suppress>
<id>CheckLevelMaxBranches</id>
</suppress>
<suppress>
<id>noExplicitConstructor</id>
</suppress>
<suppress>
<id>knownConditionTrueFalse</id>
<fileName>*/include/cpr/async_wrapper.h</fileName>
</suppress>
<suppress>
<id>y2038-unsafe-call</id>
<fileName>*/cpr/cookies.cpp</fileName>
</suppress>
<!-- Known Limitation/Bug: https://github.com/libcpr/cpr/issues/1174 -->
<suppress>
<id>y2038-unsafe-call</id>
<fileName>*/include/cpr/low_speed.h</fileName>
</suppress>
<suppress>
<id>normalCheckLevelMaxBranches</id>
</suppress>
<suppress>
<id>constParameterPointer</id>
<fileName>*/cpr/util.cpp</fileName>
</suppress>
<suppress>
<id>postfixOperator</id>
</suppress>
</suppressions>
14 changes: 7 additions & 7 deletions cpr/cookies.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,27 @@
#include <string_view>

namespace cpr {
const std::string Cookie::GetDomain() const {
const std::string& Cookie::GetDomain() const {
return domain_;
}

bool Cookie::IsIncludingSubdomains() const {
return includeSubdomains_;
}

const std::string Cookie::GetPath() const {
const std::string& Cookie::GetPath() const {
return path_;
}

bool Cookie::IsHttpsOnly() const {
return httpsOnly_;
}

const std::chrono::system_clock::time_point Cookie::GetExpires() const {
std::chrono::system_clock::time_point Cookie::GetExpires() const {
return expires_;
}

const std::string Cookie::GetExpiresString() const {
std::string Cookie::GetExpiresString() const {
std::stringstream ss;
std::tm tm{};
const std::time_t tt = std::chrono::system_clock::to_time_t(expires_);
Expand All @@ -42,15 +42,15 @@ const std::string Cookie::GetExpiresString() const {
return ss.str();
}

const std::string Cookie::GetName() const {
const std::string& Cookie::GetName() const {
return name_;
}

const std::string Cookie::GetValue() const {
const std::string& Cookie::GetValue() const {
return value_;
}

const std::string Cookies::GetEncoded(const CurlHolder& holder) const {
std::string Cookies::GetEncoded(const CurlHolder& holder) const {
std::stringstream stream;
for (const cpr::Cookie& item : cookies_) {
// Depending on if encoding is set to "true", we will URL-encode cookies
Expand Down
7 changes: 4 additions & 3 deletions cpr/session.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "cpr/session.h"

#include <algorithm>
#include <array>
#include <atomic>
#include <cassert>
Expand Down Expand Up @@ -184,8 +185,8 @@ void Session::prepareCommonShared() {
// handle NO_PROXY override passed through Proxies object
// Example: Proxies{"no_proxy": ""} will override environment variable definition with an empty list
const std::array<std::string, 2> no_proxy{"no_proxy", "NO_PROXY"};
for (const auto& item : no_proxy) {
if (proxies_.has(item)) {
for (const auto& item : no_proxy) { // cppcheck-suppress useStlAlgorithm
if (proxies_.has(item)) { // cppcheck-suppress useStlAlgorithm
curl_easy_setopt(curl_->handle, CURLOPT_NOPROXY, proxies_[item].c_str());
break;
}
Expand Down Expand Up @@ -449,7 +450,7 @@ void Session::SetBody(Body&& body) {

void Session::SetLowSpeed(const LowSpeed& low_speed) {
curl_easy_setopt(curl_->handle, CURLOPT_LOW_SPEED_LIMIT, low_speed.limit);
curl_easy_setopt(curl_->handle, CURLOPT_LOW_SPEED_TIME, low_speed.time);
curl_easy_setopt(curl_->handle, CURLOPT_LOW_SPEED_TIME, low_speed.time); // cppcheck-suppress y2038-unsafe-call
}

void Session::SetVerifySsl(const VerifySsl& verify) {
Expand Down
4 changes: 1 addition & 3 deletions cpr/threadpool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,7 @@ bool ThreadPool::CreateThread() {
if (task) {
task();
++idle_thread_num;
if (initialRun) {
initialRun = false;
}
initialRun = false;
}
}
});
Expand Down
27 changes: 13 additions & 14 deletions include/cpr/cookies.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "cpr/curlholder.h"
#include <chrono>
#include <initializer_list>
#include <sstream>
#include <string>
#include <vector>

Expand All @@ -24,14 +23,14 @@ class Cookie {
* So we fall back to std::chrono::system_clock::from_time_t(0) for the minimum value here.
**/
Cookie(const std::string& name, const std::string& value, const std::string& domain = "", bool p_isIncludingSubdomains = false, const std::string& path = "/", bool p_isHttpsOnly = false, std::chrono::system_clock::time_point expires = std::chrono::system_clock::from_time_t(0)) : name_{name}, value_{value}, domain_{domain}, includeSubdomains_{p_isIncludingSubdomains}, path_{path}, httpsOnly_{p_isHttpsOnly}, expires_{expires} {}
const std::string GetDomain() const;
bool IsIncludingSubdomains() const;
const std::string GetPath() const;
bool IsHttpsOnly() const;
const std::chrono::system_clock::time_point GetExpires() const;
const std::string GetExpiresString() const;
const std::string GetName() const;
const std::string GetValue() const;
[[nodiscard]] const std::string& GetDomain() const;
[[nodiscard]] bool IsIncludingSubdomains() const;
[[nodiscard]] const std::string& GetPath() const;
[[nodiscard]] bool IsHttpsOnly() const;
[[nodiscard]] std::chrono::system_clock::time_point GetExpires() const;
[[nodiscard]] std::string GetExpiresString() const;
[[nodiscard]] const std::string& GetName() const;
[[nodiscard]] const std::string& GetValue() const;

private:
std::string name_;
Expand Down Expand Up @@ -68,17 +67,17 @@ class Cookies {
Cookies(const cpr::Cookie& cookie, bool p_encode = true) : encode{p_encode}, cookies_{cookie} {}

cpr::Cookie& operator[](size_t pos);
const std::string GetEncoded(const CurlHolder& holder) const;
[[nodiscard]] std::string GetEncoded(const CurlHolder& holder) const;

using iterator = std::vector<cpr::Cookie>::iterator;
using const_iterator = std::vector<cpr::Cookie>::const_iterator;

iterator begin();
iterator end();
const_iterator begin() const;
const_iterator end() const;
const_iterator cbegin() const;
const_iterator cend() const;
[[nodiscard]] const_iterator begin() const;
[[nodiscard]] const_iterator end() const;
[[nodiscard]] const_iterator cbegin() const;
[[nodiscard]] const_iterator cend() const;
void emplace_back(const Cookie& str);
[[nodiscard]] bool empty() const;
void push_back(const Cookie& str);
Expand Down

0 comments on commit 9c66a3d

Please sign in to comment.