cppcheck/lib
Paul Fultz II 091f4bcf8d Add check for unnecessary search before insertion
This will warn for cases where searching in an associative container happens before insertion, like this:

```cpp
void f1(std::set<unsigned>& s, unsigned x) {
    if (s.find(x) == s.end()) {
        s.insert(x);
    }
}

void f2(std::map<unsigned, unsigned>& m, unsigned x) {
    if (m.find(x) == m.end()) {
        m.emplace(x, 1);
    } else {
        m[x] = 1;
    }
}
```

In the case of the map it could be written as `m[x] = 1` as it will create the key if it doesnt exist, so the extra search is not necessary.

I have this marked as `performance` as it is mostly concerning performance, but there could be a copy-paste error possibly, although I dont think thats common.
2019-05-02 11:04:23 +02:00
..
CMakeLists.txt CMake: Find header in externals, e.g. externals/picojson.h 2019-04-22 18:52:02 +02:00
analyzerinfo.cpp Buffer overflow: Add CTU checking for pointer arithmetic overflows 2019-04-03 06:43:56 +02:00
analyzerinfo.h Updated copyright year 2018-10-13 18:20:31 +02:00
astutils.cpp Refactoring: Use stl algorithm 2019-04-28 07:40:00 +02:00
astutils.h Fix issue 9006: False positive: Return value of function std::move() is not used. 2019-04-15 06:37:27 +02:00
check.cpp Updated copyright year 2018-10-13 18:20:31 +02:00
check.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
check64bit.cpp Rename _tokenizer, _settings, _errorLogger 2018-06-16 16:10:28 +02:00
check64bit.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkassert.cpp Update copyright year 2019-02-09 07:24:06 +01:00
checkassert.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkautovariables.cpp Fix issue 8996: False positive duplicateCondition 2019-03-19 06:25:10 +01:00
checkautovariables.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkbool.cpp Fix 8840: Don't warn when returning a bitmask as bool (#1818) 2019-05-02 07:00:27 +02:00
checkbool.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkboost.cpp Rename _tokenizer, _settings, _errorLogger 2018-06-16 16:10:28 +02:00
checkboost.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkbufferoverrun.cpp Fixed #9112 (false positive: (error) Array index out of bounds; buffer 'x' is accessed at offset n.) 2019-05-01 13:00:14 +02:00
checkbufferoverrun.h Buffer overflow: Add CTU checking for pointer arithmetic overflows 2019-04-03 06:43:56 +02:00
checkclass.cpp Library: Added <smart-pointer> element 2019-04-24 13:06:58 +02:00
checkclass.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkcondition.cpp Fix issue 9103: False positive duplicateConditionAssign (#1808) 2019-04-26 12:30:41 +02:00
checkcondition.h astyle formatting 2019-04-18 20:21:00 +02:00
checkexceptionsafety.cpp Refactoring; Use range for loops 2018-07-14 09:49:03 +02:00
checkexceptionsafety.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkfunctions.cpp Fix false positive with ignoredReturnValue with std::move (#1809) 2019-04-26 12:22:31 +02:00
checkfunctions.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkinternal.cpp CheckInternal: Extend redundant null pointer check before Token::Match() (#1789) 2019-04-06 07:44:44 +02:00
checkinternal.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkio.cpp Set wchar_t type (#1807) 2019-05-01 16:34:28 +02:00
checkio.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkleakautovar.cpp CheckLeakAutoVar: Use Library::isSmartPointer() 2019-04-24 15:35:47 +02:00
checkleakautovar.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkmemoryleak.cpp Fixed #8848 (False positive memory leak if locally defined type returns a new pointer) 2019-04-22 17:37:41 +02:00
checkmemoryleak.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checknullpointer.cpp Improve diagnostics with null smart pointers (#1805) 2019-04-26 11:30:09 +02:00
checknullpointer.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkother.cpp Removed --std=posix. From now on, if you use --library=posix then the posix checks will be enabled. 2019-04-12 06:47:28 +02:00
checkother.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkpostfixoperator.cpp Refactoring: Use ranged for loop 2018-07-13 16:50:12 +02:00
checkpostfixoperator.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checksizeof.cpp sizeof: write inconclusive warning if calculation in sizeof is done indirectly by macro 2019-02-26 21:06:44 +01:00
checksizeof.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkstl.cpp Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
checkstl.h Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
checkstring.cpp Checkstring fixes (#1783) 2019-04-06 06:54:38 +02:00
checkstring.h Checkstring fixes (#1783) 2019-04-06 06:54:38 +02:00
checktype.cpp Set wchar_t type (#1807) 2019-05-01 16:34:28 +02:00
checktype.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkuninitvar.cpp CheckBufferOverrun: Add CTU analysis 2019-03-23 08:36:10 +01:00
checkuninitvar.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkunusedfunctions.cpp Fixed #8580 (False positive: unused function (lambda)) 2019-04-27 17:17:51 +02:00
checkunusedfunctions.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkunusedvar.cpp Unused struct member: Fix FPs seen in daca@home results for template structs 2019-03-06 20:51:48 +01:00
checkunusedvar.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
checkvaarg.cpp Update copyright year 2019-02-09 07:24:06 +01:00
checkvaarg.h Disable all simplified checks 2019-03-16 09:17:50 +01:00
config.h Travis: Enable missingOverride checker 2019-01-13 12:21:01 +01:00
cppcheck.cpp Fix and test syntaxError suppression 2019-05-01 11:54:13 +02:00
cppcheck.h test/cli: execute addon 2019-04-14 15:00:03 +02:00
cppcheck.natvis Fixed Visual Studio Natvis file after recent refactoring (#1299) 2018-07-09 08:27:26 +02:00
cppcheck.vcxproj Add ctu sources to VS projects 2018-12-27 22:11:40 +01:00
cppcheck.vcxproj.filters Add ctu sources to VS projects 2018-12-27 22:11:40 +01:00
ctu.cpp CheckBufferOverrun: Better CTU checking when variable address is passed 2019-03-23 15:57:17 +01:00
ctu.h CheckBufferOverrun: Add CTU analysis 2019-03-23 08:36:10 +01:00
errorlogger.cpp Add missing line feed to the generated plist output (#1792) 2019-04-08 18:09:18 +02:00
errorlogger.h Update copyright year 2019-02-09 07:24:06 +01:00
importproject.cpp Fixed Cppcheck shadowVar warning 2019-04-30 20:19:21 +02:00
importproject.h analyzing one vs config (first debug config that matches platform) 2019-04-13 20:01:40 +02:00
lib.pri CTU: Refactoring 2018-12-25 21:11:23 +01:00
library.cpp Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
library.h Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
matchcompiler.h Update copyright year to 2007-2016. 2016-01-01 15:34:45 +02:00
mathlib.cpp Update copyright year 2019-02-09 07:24:06 +01:00
mathlib.h Update copyright year 2019-02-09 07:24:06 +01:00
path.cpp Fixed #error in self check when __CPPCHECK__ is defined 2019-04-30 20:31:46 +02:00
path.h Update copyright year 2019-02-09 07:24:06 +01:00
pathmatch.cpp Updated copyright year 2018-10-13 18:20:31 +02:00
pathmatch.h Updated copyright year 2018-10-13 18:20:31 +02:00
pcrerules.pri
platform.cpp Updated copyright year 2018-03-31 20:59:09 +02:00
platform.h Fix Cppcheck error message 2018-10-20 15:28:34 +02:00
preprocessor.cpp Optimization: Library does not need to store "#define " substring for each define 2019-02-28 22:34:26 +01:00
preprocessor.h Renamed private member file0 2018-06-17 09:06:16 +02:00
settings.cpp Refactoring; Reorder Settings members alphabetically. 2019-04-13 15:34:50 +02:00
settings.h test/cli: execute addon 2019-04-14 15:00:03 +02:00
standards.h Add -std=c++17 and allow semicolon in 'if ()' 2019-04-12 09:10:25 +02:00
suppressions.cpp Update copyright year 2019-02-09 07:24:06 +01:00
suppressions.h suppressions: Avoid duplicate comparison. 2018-10-04 17:13:11 +02:00
symboldatabase.cpp Set wchar_t type (#1807) 2019-05-01 16:34:28 +02:00
symboldatabase.h Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
templatesimplifier.cpp partial fix for #8663 (Stack overflow with template disambiguator) (#1801) 2019-04-21 06:46:16 +02:00
templatesimplifier.h Fixed #9040 (Type alias 'BOOL' declared with 'using' keyword breaks type detection) (#1759) 2019-03-26 07:09:56 +01:00
timer.cpp Rename private member variables 2018-06-17 17:20:16 +02:00
timer.h Update copyright year 2019-02-09 07:24:06 +01:00
token.cpp Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
token.h Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
tokenize.cpp Fixed #9110 (Syntax error on valid C++ code) (#1813) 2019-04-29 15:17:37 +02:00
tokenize.h Fix Cppcheck passedByValue warning 2019-04-28 07:58:47 +02:00
tokenlist.cpp Fix FP with unused variable (#1814) 2019-04-29 11:50:19 +02:00
tokenlist.h Run simplifyPlatformTypes on library return types (#1672) 2019-02-15 13:29:52 +01:00
utils.h Revert "Refactoring endsWith utility function" 2018-07-25 16:14:43 +02:00
valueflow.cpp Add check for unnecessary search before insertion 2019-05-02 11:04:23 +02:00
valueflow.h Array index: Checking array index out of bounds for dynamic buffers 2019-03-17 13:09:15 +01:00
version.h Set version to 1.87.99/1.88 dev 2019-02-27 21:30:54 +01:00
version.rc