Commit Graph

18973 Commits

Author SHA1 Message Date
PKEuS 34874dd94f Optimization: Removed unnecessary calls to simplifyPath(). The Caller should do this, and our callers (mainly the test suite) more or less do so, as they all supply just dummy paths ("test.cpp") 2018-12-18 20:33:45 +01:00
orbitcowboy b555572f9a wxwidgets.cfg: Added support for constants from wx/valnum.h 2018-12-18 15:40:23 +01:00
orbitcowboy 13c8707b96 wxwidgets.cfg: Added support for DECLARE_APP(app) macro. 2018-12-18 15:34:25 +01:00
orbitcowboy 6768c83155 wxwidgets.cfg: Added support for constants from wx/cmdline.h 2018-12-18 15:31:32 +01:00
orbitcowboy ac7ebd6044 wxwidgets.cfg: Improved support for macros from wx/defs.h 2018-12-18 15:19:04 +01:00
Daniel Marjamäki bc34f0239d Disable the subfunction value flow analysis. It does not work well and needs to be rewritten. There are false positives. 2018-12-18 14:36:49 +01:00
orbitcowboy c58385f58a wxwidgets.cfg: Improved support for more wxWidgets types. 2018-12-18 09:22:41 +01:00
orbitcowboy c080b2750e wxwidgets.cfg: Added support for WXDLLIMPEXP_FWD_CORE. 2018-12-18 08:20:22 +01:00
Paul Fultz II 34330b51d1 Fix issue 8905: Condition 'a==0' is always false
This fixes the FP in:

```cpp
void f(const int a[]){ if (a == 0){} }
```
2018-12-18 08:16:43 +01:00
IOBYTE 1cba78090c Fix const anonymous struct. (#1527) 2018-12-18 08:15:12 +01:00
Daniel Marjamäki 0f63874c62 Take back the whole program analysis for null pointers and uninitialized variables 2018-12-18 07:56:33 +01:00
Daniel Marjamäki 643ddd4caa Code cleanup 2018-12-17 18:54:32 +01:00
Daniel Marjamäki 3b328f9187 CheckMemoryLeak: Cleanup the old memory leaks check 2018-12-17 18:12:50 +01:00
Daniel Marjamäki f118c22bb6 CheckUnusedVar: Cleanup checker 2018-12-17 17:48:45 +01:00
Daniel Marjamäki cf09fd6274 CheckUnusedVar: Code cleanup 2018-12-17 17:28:15 +01:00
orbitcowboy 9290122c2f wxwidgets.cfg: Added support for WX_DEFINE_ARRAY_PTR. 2018-12-17 16:58:56 +01:00
orbitcowboy 0221ec3fc2 wxwidgets.cfg: Added some wxLocal defintions. 2018-12-17 16:50:21 +01:00
Daniel Marjamäki fe38e256cc Fixed #7907 (FN: redundant assignment inside switchcase, overwritten by assignment outside of switch) 2018-12-17 16:10:47 +01:00
orbitcowboy 4558fd5a2c Merge branch 'master' of https://github.com/danmar/cppcheck 2018-12-17 15:49:03 +01:00
orbitcowboy a382657128 wxwidgets.cfg: Improved support for some defintions from wxGrid. 2018-12-17 15:48:26 +01:00
Daniel Marjamäki bf4e850e11 Fixed #4475 (New check: struct member is assigned a value that is not read) 2018-12-17 15:40:15 +01:00
Daniel Marjamäki 858d9a18a7 Fixed #3857 (false negative: (style) Variable 'var' is assigned a value that is never used) 2018-12-17 15:16:47 +01:00
orbitcowboy 8195a76035 wxwidgets.cfg: Added support for definitions from wx/defs.h 2018-12-17 14:08:53 +01:00
orbitcowboy 0fc62128f6 wxwidgets.cfg: Added support for definitions from wx/colour.h 2018-12-17 13:56:34 +01:00
orbitcowboy 04ffba3a8b wxwidgets.cfg: Added support for definitions from wx/artprov.h 2018-12-17 13:53:01 +01:00
orbitcowboy 548e529bfc wxwidgets.cfg: Added support for more constants from wx/defs.h. 2018-12-17 13:35:33 +01:00
orbitcowboy aba57e46c2 wxwidgets.cfg: Improved support for defines from wxDialog. 2018-12-17 13:19:58 +01:00
orbitcowboy ad29421c33 wxwidgets.cfg: EVT_SASH_DRAGGED_RANGE takes three arguments. 2018-12-17 09:23:50 +01:00
orbitcowboy 3473b6e5a8 wxwidgets.cfg: EVT_GRID_CMD_CELL_CHANGED requires two arguments. 2018-12-17 09:09:59 +01:00
orbitcowboy 7d8b60dcb9 wxwidgets.cfg: Improved support for some event table macros. 2018-12-17 09:01:47 +01:00
Paul Fultz II 025881cf35 Fix issue 8829: Condition '...' is always true (int buf[42]; if(buf != NULL){})
This makes arrays non-null in valueflow, so it can catch comparisons against null that is always true:

```cpp
void f(void) {
   int buf[42];
   if( buf != 0) {;} // << always true
}
```
2018-12-17 06:07:34 +01:00
Paul Fultz II 9b973e652c Issue 8830: New check: Function argument evaluates to constant value
Add a check for function arguments that can be constant:

```cpp
extern void bar(int);
void f(int x) {
   bar((x & 0x01) >> 7); // function 'bar' is always called with a '0'-argument
}
```
2018-12-17 06:04:24 +01:00
IOBYTE 2090866cd0 template simplifier: remove explicit instantiations after instantiation (#1523)
* template simplifier: remove explicit instantiations after instantiation

* Fix use after free crash in clang test suite.
2018-12-17 05:58:48 +01:00
Daniel Marjamäki 357e2fbfb3 Add testcase for #8807 (False negative: Redundant variable assignments (loop)) 2018-12-16 21:45:26 +01:00
Daniel Marjamäki c8d688607a Fixed #8901 (Unused value: const variable initialization) 2018-12-16 19:01:05 +01:00
Daniel Marjamäki 21eb1c5e22 FwdAnalysis: Fix false negatives for struct members 2018-12-16 18:32:34 +01:00
orbitcowboy 30220fa7fc wxwidgets.cfg: Added more constants from wx/gdicmn.h 2018-12-16 17:29:45 +01:00
Daniel Marjamäki 46a0172480 FwdAnalysis: fix FP in loop 2018-12-16 16:43:04 +01:00
orbitcowboy 152df1bf00 wxWidgets.cfg: Addd more definitions from multiple wxWidgets-classes. 2018-12-16 15:31:06 +01:00
orbitcowboy 60bfa3dfc0 wxwidgets.cfg: Added support for more macro defintions from various wxWidgets-classes. 2018-12-16 15:08:50 +01:00
orbitcowboy 44b545b1c5 wxwidgets.cfg: Added support for more macro defintions from various wxWidgets-classes. 2018-12-16 14:39:24 +01:00
Daniel Marjamäki 97d2075007 FwdAnalysis: better handling of loops 2018-12-16 11:42:11 +01:00
Daniel Marjamäki 3af0d73f82 Unused value: Fixed false negatives for loops 2018-12-16 11:18:37 +01:00
Paul Fultz II 3262a3bebe Add isSameExpression to valueflow analysis
Check for same expressions in valueflow analysis.
2018-12-16 07:35:27 +01:00
Paul Fultz II 45dcfad9f9 Fix issue 8899: False positive returnDanglingLifetime when returning by value
This fixes the FP from:

```cpp
#include <string>

class MyString
{
        public:
        MyString(char* source)
        {
                length = strlen( source );
                buffer = new char[length+1];
                if( buffer )
                {
                        strcpy( buffer, source );
                }
        }

        char* buffer;
        int length;
};

MyString Foo()
{
        char arr[20];
        sprintf(arr, "hello world");

        return arr;
}

void main()
{
        MyString str = Foo();

        printf(str.buffer);
}
```
2018-12-15 17:58:45 +01:00
Daniel Marjamäki 1bfe98447a FwdAnalysis: Tweak possiblyAliased 2018-12-15 11:54:00 +01:00
orbitcowboy 9dd00a8066 wxwidgets.cfg: Added more definitions from wx/defs.h 2018-12-15 10:48:36 +01:00
Daniel Marjamäki f26549e5ab Fixed #8896 (Tokenizer: Anonymous struct) 2018-12-15 08:42:35 +01:00
IOBYTE a1c275436f Fix #8902 (Crash in TemplateSimplifier) (#1521) 2018-12-15 07:52:47 +01:00
orbitcowboy fbcb0d55d4 wxwidgets.cfg: Improved support for more predefined values from wx/defs.h 2018-12-14 21:29:41 +01:00