Skip to content

Commit 8c527bf

Browse files
authored
std.cfg: added support for more container methods (#4780)
* std.cfg: added support for `std::unordered_map::count()` * std.cfg: added support for `std::multimap::count()` * std.cfg: added support for `std::unordered_map::insert()` * std.cfg: added support for `std::unordered_set::insert()` * std.cfg: added support for `std::unordered_set::emplace()`
1 parent 2379239 commit 8c527bf

2 files changed

Lines changed: 37 additions & 3 deletions

File tree

cfg/std.cfg

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6652,8 +6652,10 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
66526652
<!-- For std::set::insert see http://en.cppreference.com/w/cpp/container/set/insert -->
66536653
<!-- For std::string::insert see http://en.cppreference.com/w/cpp/string/basic_string/insert -->
66546654
<!-- For std::vector::insert see http://en.cppreference.com/w/cpp/container/vector/insert -->
6655+
<!-- For std::unordered_map::insert see https://en.cppreference.com/w/cpp/container/unordered_map/insert -->
6656+
<!-- For std::unordered_set::insert see https://en.cppreference.com/w/cpp/container/unordered_set/insert -->
66556657
<!-- Return value type is "iterator" or "void" depending on the overloaded function. -->
6656-
<function name="std::list::insert,std::multimap::insert,std::map::insert,std::set::insert,std::multiset::insert,std::string::insert,std::vector::insert">
6658+
<function name="std::list::insert,std::multimap::insert,std::map::insert,std::set::insert,std::multiset::insert,std::string::insert,std::vector::insert,std::unordered_map::insert,std::unordered_set::insert">
66576659
<noreturn>false</noreturn>
66586660
<arg nr="1">
66596661
<not-uninit/>
@@ -6665,7 +6667,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
66656667
<not-uninit/>
66666668
</arg>
66676669
</function>
6668-
<function name="std::deque::emplace_back,std::deque::emplace_front,std::list::emplace_back,std::list::emplace_front,std::forward_list::emplace_front,std::queue::emplace,std::stack::emplace,std::vector::emplace_back,std::vector::emplace_front">
6670+
<function name="std::deque::emplace_back,std::deque::emplace_front,std::list::emplace_back,std::list::emplace_front,std::forward_list::emplace_front,std::queue::emplace,std::stack::emplace,std::vector::emplace_back,std::vector::emplace_front,std::unordered_set::emplace">
66696671
<noreturn>false</noreturn>
66706672
<arg nr="variadic">
66716673
<not-uninit/>
@@ -6690,7 +6692,9 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
66906692
<!-- template< class K > size_type std::map::count( const K& x ) const; // since C++14 -->
66916693
<!-- size_type std::set::count( const value_type& val) const; -->
66926694
<!-- size_type std::unordered_set::count( const Key& key ) const; -->
6693-
<function name="std::map::count,std::set::count,std::unordered_set::count">
6695+
<!-- size_type std::unordered_map::count( const Key& key ) const; -->
6696+
<!-- size_type std::multimap::count( const Key& key ) const; -->
6697+
<function name="std::map::count,std::set::count,std::unordered_set::count,std::unordered_map::count,std::multimap::count">
66946698
<noreturn>false</noreturn>
66956699
<returnValue type="size_t"/>
66966700
<use-retval/>

test/cfg/std.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
#include <iostream>
3636
#include <istream>
3737
#include <iterator>
38+
#include <map>
3839
#include <numeric>
3940
#include <string_view>
41+
#include <unordered_map>
4042
#include <unordered_set>
4143
#include <vector>
4244
#include <version>
@@ -848,6 +850,34 @@ void std_unordered_set_count_ignoredReturnValue(const std::unordered_set<int>& u
848850
u.count(i);
849851
}
850852

853+
void std_unordered_map_count_ignoredReturnValue(const std::unordered_map<int, int>& u)
854+
{
855+
int i;
856+
// cppcheck-suppress [uninitvar, ignoredReturnValue]
857+
u.count(i);
858+
}
859+
860+
void std_multimap_count_ignoredReturnValue(const std::multimap<int, int>& m)
861+
{
862+
int i;
863+
// cppcheck-suppress [uninitvar, ignoredReturnValue]
864+
m.count(i);
865+
}
866+
867+
void std_unordered_map_insert_unnitvar(std::unordered_set<int>& u)
868+
{
869+
int i;
870+
// cppcheck-suppress uninitvar
871+
u.insert(i);
872+
}
873+
874+
void std_unordered_map_emplace_unnitvar(std::unordered_set<int>& u)
875+
{
876+
int i;
877+
// cppcheck-suppress uninitvar
878+
u.emplace(i);
879+
}
880+
851881
void valid_code()
852882
{
853883
std::vector<int> vecInt{0, 1, 2};

0 commit comments

Comments
 (0)