Skip to content

Commit 0554134

Browse files
committed
cc userver: enable bugprone-use-after-move clang-tidy check
Tests: CI commit_hash:5e83f7eaedbf0e32509d271648e26edc89000b4a
1 parent 99bff2c commit 0554134

38 files changed

Lines changed: 196 additions & 128 deletions

File tree

.clang-tidy

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Checks:
2121
,-bugprone-implicit-widening-of-multiplication-result\
2222
,-bugprone-lambda-function-name\
2323
,-bugprone-narrowing-conversions\
24-
,-bugprone-use-after-move\
2524
,-cert-dcl21-cpp\
2625
,-cert-err09-cpp\
2726
,-cert-err33-c\

.mapping.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5514,6 +5514,7 @@
55145514
"universal/include/userver/utils/fixed_array.hpp":"taxi/uservices/userver/universal/include/userver/utils/fixed_array.hpp",
55155515
"universal/include/userver/utils/flags.hpp":"taxi/uservices/userver/universal/include/userver/utils/flags.hpp",
55165516
"universal/include/userver/utils/fmt_compat.hpp":"taxi/uservices/userver/universal/include/userver/utils/fmt_compat.hpp",
5517+
"universal/include/userver/utils/forward_like.hpp":"taxi/uservices/userver/universal/include/userver/utils/forward_like.hpp",
55175518
"universal/include/userver/utils/from_string.hpp":"taxi/uservices/userver/universal/include/userver/utils/from_string.hpp",
55185519
"universal/include/userver/utils/function_ref.hpp":"taxi/uservices/userver/universal/include/userver/utils/function_ref.hpp",
55195520
"universal/include/userver/utils/get_if.hpp":"taxi/uservices/userver/universal/include/userver/utils/get_if.hpp",

core/functional_tests/websocket/service.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class WebsocketsHandler final : public server::handlers::WebsocketHandlerBase {
4646
break;
4747
}
4848

49-
chat.Send(std::move(message));
49+
chat.Send(message);
5050
}
5151
if (message.close_status) {
5252
chat.Close(*message.close_status);
@@ -74,7 +74,7 @@ class WebsocketsHandlerAlt final : public server::handlers::WebsocketHandlerBase
7474
if (message.close_status) {
7575
break;
7676
}
77-
chat.Send(std::move(message));
77+
chat.Send(message);
7878
} else {
7979
// we could've sent yet another server::websocket::Message
8080
// e.g. chat.SendBinary(server::websocket::Message{ "blah", {}, true });

core/include/userver/concurrent/impl/monotonic_concurrent_set.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,8 @@ std::pair<T&, bool> MonotonicConcurrentSet<T, Hash, KeyEqual>::TryEmplace(const
467467
continue;
468468
}
469469

470+
// Value of 'args' is only consumed if item construction happens.
471+
// NOLINTNEXTLINE(bugprone-use-after-move)
470472
auto [item, inserted] = TryEmplaceLocked(current, bucket, key, std::forward<Args>(args)...);
471473

472474
if (item) {

core/src/clients/http/request.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ Request& Request::url(std::string url) & {
253253

254254
/// `curl::easy::set_url(std::string&&, std::error_code&)` doesn't consume the string if fails.
255255
if (ec) {
256+
// NOLINTNEXTLINE(bugprone-use-after-move)
256257
throw BadArgumentException(ec, "Bad URL", url, {});
257258
}
258259

core/src/components/component_list.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,11 @@ yaml_config::Schema ComponentList::GetStaticConfigSchema() const {
4141
}
4242

4343
ComponentList& ComponentList::Append(impl::ComponentAdderPtr&& added) & {
44+
const auto component_name = added->GetComponentName();
4445
auto [it, ok] = adders_.insert(std::move(added));
4546
if (!ok) {
4647
// Append is typically called from main(), throwing an exception would std::terminate.
47-
utils::AbortWithStacktrace(fmt::format("Attempt to add a duplicate component '{}'", added->GetComponentName()));
48+
utils::AbortWithStacktrace(fmt::format("Attempt to add a duplicate component '{}'", component_name));
4849
}
4950
return *this;
5051
}

core/src/concurrent/mp_queue_test.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ TYPED_UTEST_P(TypedQueueFixture, Noblock) {
246246

247247
auto value = this->Wrap(2);
248248
EXPECT_FALSE(producer.PushNoblock(std::move(value)));
249+
// NOLINTNEXTLINE(bugprone-use-after-move)
249250
EXPECT_TRUE(this->CheckWasNotMovedOut(value));
250251
}
251252

@@ -264,10 +265,12 @@ TYPED_UTEST_P(TypedQueueFixture, NotMovedValueOnFalse) {
264265

265266
auto value = this->Wrap(2);
266267
EXPECT_FALSE(producer.PushNoblock(std::move(value)));
268+
// NOLINTNEXTLINE(bugprone-use-after-move)
267269
EXPECT_TRUE(this->CheckWasNotMovedOut(value));
268270

269271
engine::current_task::GetCancellationToken().RequestCancel();
270272
EXPECT_FALSE(producer.Push(std::move(value)));
273+
// NOLINTNEXTLINE(bugprone-use-after-move)
271274
EXPECT_TRUE(this->CheckWasNotMovedOut(value));
272275
}
273276

core/src/curl-ev/easy.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ void easy::add_resolve(const std::string& host, const std::string& port, const s
601601
std::move(host_port_addr)
602602
))
603603
{
604+
// NOLINTNEXTLINE(bugprone-use-after-move)
604605
UASSERT_MSG(!host_port_addr.empty(), "ReplaceFirstIf moved the string out, when it shouldn't have done so.");
605606
resolved_hosts_->add(std::move(host_port_addr));
606607
}

core/src/curl-ev/string_list_test.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ TEST(CurlStringList, ReplaceFirstIfOnlyConsumesOnReplacement) {
8585
const auto replaced = list.ReplaceFirstIf([](const std::string&) { return false; }, std::move(value));
8686
EXPECT_FALSE(replaced);
8787
// value is not moved out
88+
// NOLINTNEXTLINE(bugprone-use-after-move)
8889
EXPECT_FALSE(value.empty());
8990
}
9091

@@ -93,6 +94,7 @@ TEST(CurlStringList, ReplaceFirstIfOnlyConsumesOnReplacement) {
9394
const auto replaced = list.ReplaceFirstIf([](const std::string&) { return true; }, std::move(value));
9495
EXPECT_TRUE(replaced);
9596
// now value is moved out
97+
// NOLINTNEXTLINE(bugprone-use-after-move)
9698
EXPECT_TRUE(value.empty());
9799
}
98100
}

core/src/engine/ev/thread_pool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ThreadPool::ThreadPool(ThreadPoolConfig config, UseDefaultEvLoop)
1919
: ThreadPool(std::move(config), !config.ev_default_loop_disabled)
2020
{}
2121

22-
ThreadPool::ThreadPool(ThreadPoolConfig config, bool use_ev_default_loop)
22+
ThreadPool::ThreadPool(ThreadPoolConfig&& config, bool use_ev_default_loop)
2323
: use_ev_default_loop_(use_ev_default_loop)
2424
{
2525
threads_ = utils::GenerateFixedArray(config.threads, [&](std::size_t index) {

0 commit comments

Comments
 (0)