Commit Graph

7298 Commits

Author SHA1 Message Date
Daniel Marjamäki 410b11c00f Merge pull request #60 from richq/varid0
Fix varid 0 with function pointer and virtual methods
2011-11-09 14:28:54 -08:00
Thomas Jarosch 1a454256dc Cache result of tok->isStandardType()
Also contains test order improvements from Johan Samuelson (#3116).

Run time went down from 15.15s to 14.95s for the case below.

Benchmarked using these settings:
- CXXFLAGS="-O2 -g -NDEBUG"
- time -p cppcheck.git -q --std=posix --enable=all --inconclusive -Dfoo .

on the "rpm" codebase.
2011-11-09 21:56:30 +01:00
Reijo Tomperi 5fefaf4166 Improve error logging in ThreadExecutor 2011-11-09 22:15:53 +02:00
Thomas Jarosch 7202a51065 Add negative test for .c_str() unit test and TODO_ASSERT_EQUALS (#3266) 2011-11-09 21:08:53 +01:00
Richard Quirk f56aa19fac Fix varid 0 with function pointer and virtual methods 2011-11-09 21:07:55 +01:00
Thomas Jarosch c010ca33a5 Run astyle 2011-11-09 20:34:58 +01:00
Daniel Marjamäki 2d00cabee1 Fixed #3279 (Token::Match called with varid 0) 2011-11-09 18:49:17 +01:00
Daniel Marjamäki b7cc9779c4 Merge pull request #59 from richq/sameexpr
Improved same expression check for ticket #3274
2011-11-08 23:56:36 -08:00
Daniel Marjamäki 3b11ae3fac Merge pull request #58 from richq/autoptr
Fix namespaced types for auto_ptr new[] errors
2011-11-08 23:49:59 -08:00
Reijo Tomperi 7a294c1f79 Fix #3307 (Invalid format string/parameter mismatch warning)
http://sourceforge.net/apps/trac/cppcheck/ticket/3307
2011-11-09 00:16:37 +02:00
Edoardo Prezioso 392f705b73 Oops. 2011-11-08 23:10:53 +01:00
Edoardo Prezioso 0569953753 Fixed ticket #3309 (false positive: (style) Boolean result is used in bitwise operation. Clarify expression with parentheses) 2011-11-08 22:48:14 +01:00
Richard Quirk d5c7c5d098 Remove duplicate expressions on both sides of || 2011-11-08 21:56:54 +01:00
Richard Quirk d1bc8819f9 Fix for same expression separated by commas
The code branch tested by the previous check for && is now different, so
I've changed the test to use == instead. There was also a missing case
when the expression was followed by a comma instead of being preceded by
one.
2011-11-08 21:56:54 +01:00
Richard Quirk d5664dd6cf Improved %or% and & checks 2011-11-08 21:56:54 +01:00
Richard Quirk 4cb97edbaf Improved same expression check for ticket #3274
Expand the logic for the check for the same expression on both sides of
the || and && operators. Now expressions can be more complex, with the
"alt" variable helping to fudge operator precedence to avoid false
positives.
2011-11-08 21:54:42 +01:00
Edoardo Prezioso 8a60ceed82 Add test for Token::eraseTokens. 2011-11-08 18:59:31 +01:00
Edoardo Prezioso 3cc9a333c9 Fixed tokenizer: don't change '*(str+num)' if '*' means a product with a previous variable or number.
Ditto for '&str[num]' (still commented).
2011-11-08 18:14:43 +01:00
Edoardo Prezioso a546fc6e9d Fixed ticket #3310 (segmentation fault of cppcheck) 2011-11-08 17:37:24 +01:00
Edoardo Prezioso 3abece027e Refactoring: unify same dead code tests with a list. 2011-11-08 14:13:26 +01:00
Edoardo Prezioso aaa77c4709 Improve tokenizer: remove more redundant parenthesis and add a prototype code for: '&str[num]'=>'(str+num)' with reporting non obvious test failures. 2011-11-07 23:40:06 +01:00
Marek Zmysłowski fed875f4a4 Fix #70 (Locate memory leaks when alloc happens in function parameter)
http://sourceforge.net/apps/trac/cppcheck/ticket/70
2011-11-07 23:50:57 +02:00
Reijo Tomperi 7b7e072b88 Fix #3278 (FP: Possible null pointer dereference with for loop)
http://sourceforge.net/apps/trac/cppcheck/ticket/3278
Bail out if token "for" is encountered.
2011-11-07 22:10:21 +02:00
Edoardo Prezioso 5cf7cb9ff5 Conforming style: always use 'std::' namespace where needed. This removes the mixing style inside the code. 2011-11-07 00:54:00 +01:00
Thomas Jarosch a83c47d9cf Fix false positive of %or% match in alternative pattern match code
%or% triggered on code using "|=" or "||".
2011-11-06 22:12:31 +01:00
Richard Quirk 7f88b66842 Fix namespaced types for auto_ptr new[] errors
This fixes false negatives for code such as:

    std::auto_ptr<foo::bar> p(new foo::bar[10]);

The idea is to find a "new", search for the end token ";", then see if
the declaration ends in a closing square bracket. Also fixes other cases
that checked for "new %type% [" so that they work with namespaces.
2011-11-06 21:20:24 +01:00
Thomas Jarosch 1360c554ed Extended isOp() tests to do proper negative testing against other operators 2011-11-06 21:20:13 +01:00
Thomas Jarosch 7ef1107a55 Unit test for Token::isArithmeticalOp() and Token::isStandardType() 2011-11-06 18:55:02 +01:00
Thomas Jarosch d7ce892c06 Unit test for %varid% match
Also run astyle.
2011-11-06 18:37:45 +01:00
Thomas Jarosch 05c4b97bbe Unit test for %type% and %str% matches 2011-11-06 18:30:34 +01:00
Daniel Marjamäki fa076598ad Fixed #3233 (false positive: (style) Checking if unsigned variable 'i' is less than zero.) 2011-11-06 18:24:37 +01:00
Thomas Jarosch 95851454cc Unit test for Token::isExtendedOp() and Token::isAssignmentOp() 2011-11-06 18:19:27 +01:00
Thomas Jarosch 19c9c97608 Fix single %op% operator not working at all
When parsing the Token::Match pattern, we accesed
the wrong character in the pattern and never
executed the %op% check.

In addition the unit test function for %op%
wasn't registered in the test suite. Ups.

All fixed now and also provide a complete
check for all operators %op% supports.
2011-11-06 18:02:18 +01:00
Edoardo Prezioso 6e2f2816de Improve same expression check: remove '%op%' pattern and add ',' for the same expressions as an argument inside a function.
Improve compound assignment simplification: use already defined 'isAssignmentOp' and extend the adding parenthesis to a generic operator, not only to the arithmetical ones. See: http://en.cppreference.com/w/cpp/language/operator_precedence
2011-11-06 14:35:53 +01:00
Daniel Marjamäki f092779a4d Fixed #3282 (Invalid report that an array index is of type char.) 2011-11-06 11:26:28 +01:00
Daniel Marjamäki ed97b62610 Fixed #3275 (Missing includes always reported) 2011-11-06 08:59:07 +01:00
Daniel Marjamäki e11c1f7975 Fixed #3265 (false positive: comparison of bool with nonzero integer) 2011-11-06 08:21:34 +01:00
Edoardo Prezioso 99463d3368 Improve same expression check: take count of operations and assignments before the same expression and add missing 'return' pattern to the struct member variable part of the check. 2011-11-05 22:25:01 +01:00
Daniel Marjamäki d4a8184339 Fixed #3251 (Redundant code: Found a statement that begins with numeric constant) 2011-11-05 20:28:52 +01:00
Daniel Marjamäki 9903c8c0d9 astyle formatting 2011-11-05 20:00:18 +01:00
Daniel Marjamäki 2f32965bdf Token: assert that multicompare patterns don't begin with some %% command 2011-11-05 19:59:48 +01:00
Daniel Marjamäki 5edf153602 Fixed #3294 (Token::Match multi compare false negative) 2011-11-05 19:24:21 +01:00
Daniel Marjamäki 580fef6951 Merge pull request #55 from richq/sameexpr
Improve for same expression on both sides of operator
2011-11-05 10:28:14 -07:00
Daniel Marjamäki 20677a6d54 Merge pull request #56 from richq/autoptr
Extra check for auto_ptr new[]
2011-11-05 10:19:07 -07:00
Zhiyuan Zhang 4c3283738b Fixed #3292 (Error in --suppressions-list silently ignores all subsequent command line options) 2011-11-05 18:15:03 +01:00
Reijo Tomperi e989af3fd5 Fix typo "Cpppcheck" 2011-11-05 18:56:40 +02:00
Richard Quirk a3f2c1e651 Improve for same expression on both sides of operator 2011-11-05 15:46:11 +01:00
Richard Quirk 68202d8ffb Extra check for auto_ptr new[]
This fixes cases like this:

   auto_ptr<foo> bar(new foo[10]);

which previously did not work correctly.
2011-11-05 15:45:59 +01:00
Thomas Jarosch 2a46c635f6 Test case to demonstrate #3294 2011-11-05 14:04:23 +01:00
Daniel Marjamaki b96ab6ba26 Fixed #3188 (Function parser false positive) 2011-11-05 12:23:05 +01:00