Commit Graph

20784 Commits

Author SHA1 Message Date
Paul Fultz II 507c7a4388 Improvement to lifetime tracking of addressof and derefencing
This will now warn for cases like this:

```cpp
auto& f() {
    std::vector<int> x;
    return x[0];
}
```

It also improves the handling of address of operator, so it can now warn across some function calls, like this:

```cpp
int& f(int& a) {
    return a;
}
int* hello() {
    int x = 0;
    return &f(x);
}
```
2019-02-22 06:38:56 +01:00
Paul Fultz II 715714f4de Forward lifetimes in "for" loops (#1682)
* Forward lifetimes in for loops

* Format
2019-02-22 06:37:02 +01:00
orbitcowboy b06b744887 wxwidgets.cfg: Added support for more interfaces. 2019-02-21 14:55:04 +01:00
Sebastian e27a44a0ea
donate-cpu.py: Improve header detection by using regex. (#1679)
This detects more includes / headers. For example includes like
"# include <gtk/gtk.h>" with a space before "include" as it is used in
the package http://cppcheck.osuosl.org:8000/gbatnav are now also
detected.
The regex search also searches all includes for one library in one go
instead of one include per loop.
Tested with several packages to make sure libraries that were detected
before are still detected.
2019-02-21 08:14:47 +01:00
Paul Fultz II 0ee3f678b5 Fix issue 8987: False positive knownConditionTrueFalse (#1678) 2019-02-20 15:28:31 +01:00
orbitcowboy c3244cb359 Fixed regression introduced by my previous commit. 2019-02-20 11:11:20 +01:00
orbitcowboy af9cbe23f9 std.cfg: Added support for more interfaces. 2019-02-20 10:02:01 +01:00
orbitcowboy 8a4dabfe02 wxwidgets.cfg: Added support for more interfaces. 2019-02-20 09:39:00 +01:00
versat eeedb44e92 donate-cpu.py: Fix regression: Also upload results if only crashes happened
If "head" and "OLD_VERSION" both crash there are no messages and the
variable `results_exist" is set to False. But still the results must be uploaded
for the crashes to be saved also.
Tested with the package http://cppcheck.osuosl.org:8000/double-conversion
2019-02-19 13:29:32 +01:00
rikardfalkeborn 1c1778e4df donate_cpu: Refactor library checks (#1675) 2019-02-19 11:50:39 +01:00
Paul Fultz II dfaf75db54 Fix issue 8984: FP constStatement regression with qualified name (#1676) 2019-02-19 07:08:36 +01:00
amai2012 6d0a1f80b4 Add more interfaces and attributes 2019-02-18 21:48:41 +01:00
orbitcowboy 0e78547b62 wxwidgets.cfg: Added support for more interfaces. 2019-02-18 18:17:56 +01:00
orbitcowboy 0e03293a54 wxwidgets.cfg: Removed duplicate <leak-ignore/>-tag. One should be enough :-). 2019-02-18 18:12:37 +01:00
orbitcowboy 7f373ea158 wxwidgets.cfg: Added support for more interfaces. 2019-02-18 18:11:29 +01:00
versat dc63cb9f98 gtk.cfg: Add more details for g_print() and g_printerr()
Reference:
https://developer.gnome.org/glib/stable/glib-Warnings-and-Assertions.html#g-print
2019-02-18 16:48:46 +01:00
versat 8fb4e7dde8 gtk.cfg: Add more details to g_object_unref() configuration
Reference:
https://developer.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#g-object-unref
2019-02-18 16:16:10 +01:00
orbitcowboy fa7a2ecd5a wxwidgets.cfg: Added support for more interfaces. 2019-02-18 14:07:11 +01:00
orbitcowboy a7b9d8de1b std.cfg: Added support for std::ios_base::setf() and std::ostringstream::setf(). 2019-02-18 12:20:34 +01:00
versat 8e11dc5b41 gtk.cfg: Add support for G_TYPE_CHECK_INSTANCE_CAST() macro 2019-02-18 11:37:19 +01:00
Sebastian 8a9f97b5c8
donate-cpu-server.py: Verify compared Cppcheck version (#1673)
Ignore normal results (not fast or info) where the diff was made against the wrong OLD_VERSION. This avoids unwanted results when some client still analyzes an old package but the OLD_VERSION in the server script is changed for example.
Results missing the Cppcheck version info completely are also ignored.
Tested locally with correct and wrong version numbers.
2019-02-18 10:13:18 +01:00
Kamil Dudka 2908593cf6 checkautovariables: eliminate false positives on assignment of &ptr->item (#1667)
Even if `ptr` is a local variable, the object `ptr->item` might be not.
So taking address of `ptr->item` is definitely not unsafe in general.

This commit fixes false positives triggered by commit
1.85-249-gf42648fe2 on the following code of sssd:

https://github.com/SSSD/sssd/blob/d409df33/src/sbus/request/sbus_request.c#L359
2019-02-18 09:35:07 +01:00
orbitcowboy 0284705551 wxwidgets.cfg: Added support for more interfaces. 2019-02-17 23:45:26 +01:00
orbitcowboy 831670c355 posix.cfg: Improved support for more macros and constants. 2019-02-17 23:35:34 +01:00
orbitcowboy 5135cbeecd std.cfg: Added support for std::multiset::insert(). 2019-02-17 23:15:46 +01:00
orbitcowboy 3aa131470b std.cfg: Added support for std::vector::erase(). 2019-02-17 23:10:17 +01:00
orbitcowboy af4f3af851 std.cfg: Added support for std::fill(). 2019-02-17 22:58:30 +01:00
orbitcowboy c28abe7e35 std.cfg: Added support for std::map::insert(). 2019-02-17 22:50:18 +01:00
orbitcowboy 1df9c80e81 std.cfg: Added support for std::move(). 2019-02-17 22:45:45 +01:00
orbitcowboy 8820580cf6 boost.cfg: Improved support for more test macros. 2019-02-17 22:36:36 +01:00
orbitcowboy b886590cc9 boost.cfg: Improved support for more test macros. 2019-02-17 21:14:03 +01:00
orbitcowboy 4e42f83bc8 boost.cfg: Fixed some 'unknownMacro'-warnings from daca@home. 2019-02-17 20:52:54 +01:00
amai2012 c6a9d9cf15 Initial support for CppUnit 2019-02-17 20:16:01 +01:00
amai2012 8c80c5d620 Fix typo 2019-02-17 17:50:27 +01:00
amai2012 b34fe35191 Add more interfaces 2019-02-17 17:03:40 +01:00
versat 6f57b9abfa gtk.cfg: Add some GTK_*() instance cast macros
SOME GTK_*() macros most often reported as missing by daca@home are added.
2019-02-17 16:41:19 +01:00
orbitcowboy 6b1e324df0 wxwidgets.cfg: Added support for more interfaces. 2019-02-17 14:13:37 +01:00
orbitcowboy 3bef07f32f wxwidgets.cfg: Added support for more interfaces. 2019-02-17 14:09:13 +01:00
orbitcowboy 70e5fa359f wxwidgets.cfg: Added support for more interfaces. 2019-02-17 12:02:28 +01:00
orbitcowboy 5aee070515 wxwidgets.cfg: Added support for more interfaces. 2019-02-17 11:58:52 +01:00
orbitcowboy 6323d8d6b5 wxwidgets.cfg: Added support for more interfaces. 2019-02-17 11:53:30 +01:00
Sebastian ff16995b26
triage: Implement Clang-Tidy and Clazy hints (#1674)
These are mainly readability and optimization changes.
2019-02-16 17:52:36 +01:00
orbitcowboy 7629923b65 std.cfg: Attempt make travis happy. 2019-02-16 08:24:53 +01:00
amai2012 ac0d39a164 Add parentheses to G_OBJECT 2019-02-16 00:19:00 +01:00
amai2012 e3083ade52 Define G_OBBECJT(obj). It's #2 on daca@home checkLibraryFunction report currently 2019-02-15 21:50:32 +01:00
Sebastian d1deff7c02 threadexecutor.h: Disable THREADING_MODEL_FORK for Cygwin (trac 8973) (#1670)
The fork implementation in Cygwin seems to be not very reliable.
See also the Cygwin documentation here: https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures
More details in the ticket https://trac.cppcheck.net/ticket/8973
2019-02-15 21:47:33 +01:00
orbitcowboy 437e171d0d std.cfg: Added partial support for std::transform(). 2019-02-15 20:56:44 +01:00
orbitcowboy 23b771c5c8 std.cfg: Added partial support for std::sort(). 2019-02-15 20:45:46 +01:00
Paul Fultz II cf1ad5087a Extend constStatement checker
This reworks constStatement to find more issues. It catches issue [8827](https://trac.cppcheck.net/ticket/8827):

```cpp
extern void foo(int,const char*,int);
void f(int value)
{
        foo(42,"test",42),(value&42);
}
```

It also catches from issue [8451](https://trac.cppcheck.net/ticket/8451):

```cpp
void f1(int x) {
    1;
    (1);
    (char)1;
    ((char)1);
    !x;
    (!x);
    ~x;
}
```

And also:

```cpp
void f(int x) {
    x;
}
```

The other examples are not caught due to incomplete AST.
2019-02-15 13:31:40 +01:00
rikardfalkeborn dc4e7cef88 Run simplifyPlatformTypes on library return types (#1672)
Add a call to simplifyPlatformTypes() in
SymbolDatabase::setValueTypeInTokenList() to simplify return types of
library configured functions. This fixes the FN in #8141. Regression
tests are added, both for the original issue and another FN in the comments.

In order to do that, move simplifyPlatformTypes() to TokenList from Tokenizer.
This is a pure refactoring and does not change any behaviour. The code was
literally copy-pasted from one file to another and in two places
'list.front()' was changed to 'front()'.

When adding the call to simplifyPlatformTypes(), the original type of
v.size() where v is a container is changed from 'size_t' to 'std::size_t'.
Tests are updated accordingly. It can be noted that if v is declared as
'class fred : public std::vector<int> {} v', the original type of 'v.size()'
is still 'size_t' and not 'std::size_t'.
2019-02-15 13:29:52 +01:00