Commit Graph

492 Commits

Author SHA1 Message Date
Georgiy Komarov 426117a30d
misra: Improve warning messages for rule 8.2 when the missing arguments are on the next line (#3320)
This makes it easier for the user to find the violation.

Suggested in the forum: https://sourceforge.net/p/cppcheck/discussion/development/thread/801dc07e59/#a1a8/d3e9/c455/8915/747c/2525/0eb8/0f7d
2021-07-01 21:08:40 +02:00
Georgiy Komarov 10123b4ad2
misra: Emit more accurate warnings for unused arguments in rule 2.7 (#3314)
Make the MISRA addon emit extra warnings for unused arguments placed in
lines other than the function definition. This makes it easier for the
user to find violations.
2021-06-29 11:17:38 +02:00
Georgiy Komarov a2cb9f17c1
misra: Don't consider variadic arguments as the violation of rule 2.7 (#3315)
The MISRA 2012 standard does not say anything about variadic functions
in the definition of rule 2.7. Therefore, these cases should be
considered as false positives.
2021-06-29 08:46:35 +02:00
Georgiy Komarov 62dbe2eb2f
misra: Fix false positives for rule 8.2 (#3311)
Reported in the forum: https://sourceforge.net/p/cppcheck/discussion/development/thread/801dc07e59/?page=1&limit=25#a1a8
2021-06-27 22:57:50 +02:00
Georgiy Komarov 6432922c76
misra: Fix crash on rule 8.2 (#3310)
The example code that reproduces this crash:

```
int misra_8_2_o(
    const uint32_t a1,
    const uint8_t *const a2
)
{ return *a2 + a1; }
int misra_8_2_p(
    const uint32_t a1,
    const uint8_t *const a2
);
```

The unit test was not added because it looks like a typo and regressions
are unlikely.
2021-06-27 22:57:37 +02:00
Georgiy Komarov b89f5fbeff
misra: Fix 8.2 false positives (#3309)
* misra: Fix 8.2 false positives

Fix false positives in rule 8.2 that occurred in cases when we have a
function definition and declaration in the same file.

For example, the following code generated false positives before this
commit:

```
void f(uint8_t * const x);
void f(uint8_t * const x)
{ (void)x; }
```

We need to distinguish the declaration and the definition, so the dump
file generation routine was extended to keep token where the definition
of the function. The analysis in the addon also been improved.

Closes Trac issue: https://trac.cppcheck.net/ticket/10219
2021-06-27 10:51:32 +02:00
Georgiy Komarov 452c92494e
misra: Fix 8.2 false positives (#3306)
Type declaration on the next line is not allowed in rule 8.2. But we
need to make sure that the files of the checked files are the same.

Reported on the forum: https://sourceforge.net/p/cppcheck/discussion/development/thread/801dc07e59/#32c3/e90b/293e/39df/85b3/b821/e0c3
2021-06-25 16:06:29 +02:00
Georgiy Komarov 79f59d8f39
misra: Fixed crash with struct fields with unknown types on 9.x rules (#3305)
This fixes the crash on with struct fields containing unknown types
reported on the forum:
https://sourceforge.net/p/cppcheck/discussion/general/thread/d64551cc55/#5f0f

The suggested patch doesn't handle the cases when there are struct
fields with arrays containing unknown types. So the addon will not
generate warnings in these cases. The problem is that Cppcheck doesn't
generate valueType-pointer information for unknown types in the dump
file. When adding this in symboldatabase.cpp, MISRA addon will generate
a lot of false positives because we depend on the null value of
valueType.

So I suppose it better to left this as is, to don't break the addon for
such rare cases.
2021-06-24 08:29:27 +02:00
Ivar Andreas Bonsaksen dc582560cc
Add default parameter to next() to prevent StopIteration exception when no corresponding rawToken is found for '[' token (#3301)
Co-authored-by: Ivar Bonsaksen <ivar.bonsaksen@microchip.com>
2021-06-19 20:24:21 +02:00
Ivar Andreas Bonsaksen e3b7ceec7e
Fix issue where misra 9_x evaluation crashes on some undefined structs with nested initialisers (#3290) 2021-06-04 17:19:40 +02:00
Daniel Marjamäki 04c9a8329a misra: Removed some rules from getCppcheckRules() because those do not exist 2021-05-29 09:23:33 +02:00
Georgiy Komarov 7a009fece0
misra: Add support for expected suppressions in header files in `-verify` mode (#3252)
This commit allows to specify expected suppressions in the included
header files. This is necessary to verify MISRA checkers, which make
requirements for header files. For example, Rule 8.2 requires adding
prototypes for each function to the header files.
2021-05-08 10:27:31 +02:00
Daniel Marjamäki f7d0bf7a59 Refactoring; Reuse simplecpp::characterLiteralToLL 2021-05-02 13:44:37 +02:00
Georgiy Komarov e1bfd369db
misra: Fix false positives for rule 7.3 (#3236)
Fix false positives for the identifiers that contain 'ul' in their names.

Reported on the forum: https://sourceforge.net/p/cppcheck/discussion/general/thread/c326538221/
2021-04-27 19:42:34 +02:00
Georgiy Komarov fce3db8b7d
misra: Fixed a crash in rule 8.2 (#3208)
Due to incorrect indentation, we return "None" instead of an empty list,
which causes the crash.

The problem was reported on the forum: https://sourceforge.net/p/cppcheck/discussion/general/thread/e146b8d779/
2021-04-13 10:09:42 +02:00
Paul Fultz II 5077663684
Fix issue 9979: false positive: containerOutOfBounds with conditional resize (#3136) 2021-03-30 14:02:28 +02:00
Lars Even Almaas 9786f1c34b
Suggested implementation for rule 8.2 (#3169) 2021-03-25 08:25:43 +01:00
Georgiy Komarov 390a5af064
misra.py: Fix crashes on obsolete GCC syntax for struct initialization (#3175)
* misra.py: Fix crashes on obsolete GCC syntax for struct initialization

* Added expected violations
2021-03-20 13:59:39 +01:00
JuPrgn 0f2855af0b
Fix misra parameter typo (#3166) 2021-03-08 16:01:55 +01:00
Daniel Marjamäki 170c8257b2 Revert "Small refactoring"
This reverts commit 103e0d883c.
2021-03-07 10:39:23 +01:00
Daniel Marjamäki 103e0d883c Small refactoring 2021-03-07 09:03:50 +01:00
Daniel Marjamäki ebf54ac53e Misra; Remove 12.4 because the check is not implemented properly 2021-02-25 22:11:13 +01:00
Daniel Marjamäki 22727ee3ab Addons; split up possible/known values and impossible values. This is inconsistent with core Cppcheck, however the addons do not handle impossible values in general. A future improvement might be to clarify this somehow, maybe renaming Token.values. 2021-02-23 22:40:49 +01:00
Oliver Stöneberg b472b4e65d
some Python cleanups based on PyCharm inspections (#2999)
* some Python cleanups based on PyCharm inspections

* test-helloworld.py: adjusted assert in test_addon_relative_path()
2021-01-31 14:27:11 +01:00
Armin Müller 0de0a954d2
Typos found by running "codespell" (#3042) 2021-01-12 20:48:25 +01:00
Georgiy Komarov 35a42cd0fe
cppcheckdata: Make the source files for configuration public (#3030)
Extend CppcheckData class API to make the list of source files public.
This can be used by custom addons.
2021-01-08 22:59:58 +01:00
Georgiy Komarov 13b8ee8871
cppcheckdata: Use instance attributes in Cppcheckdata (#3029)
This commit makes CppcheckData class to use instance attributes instead
of class attributes.

Since class attributes are mutable (list), when you append to them, they
don't promote to instance variable which means when you call parsedump()
multiple times data just gets appended to them.

Found by samed on the forum:
https://sourceforge.net/p/cppcheck/discussion/general/thread/c6e1210ec2/
2021-01-08 10:25:51 +01:00
Georgiy Komarov 82f51bd523
misra: Fix crash on rule 9.x (#3024)
Closes ticket #10084
2021-01-07 15:04:12 +01:00
kskjerve c22290f5a3
Fix #10043 unexpected designator (#2966) 2020-12-21 13:25:41 +01:00
kskjerve d4860f500a
MISRA 9.2 to 9.5 (#2954) 2020-12-16 17:28:54 +01:00
Daniel Marjamäki a810678b83 Addons: handle inline suppressions internally in cppcheckdata 2020-12-05 11:37:09 +01:00
Daniel Marjamäki 02d927f0f9 Temporarily disable misra suppressions test 2020-12-04 21:16:02 +01:00
Daniel Marjamäki 649a754cfd Revert "Addons: handle inline suppressions internally in cppcheckdata"
This reverts commit 1ce78a1086.

There was regressions in handling of suppressions.
2020-12-04 18:05:47 +01:00
Ivar Andreas Bonsaksen 9029fff59d
Fixed #9993 (false positive: misra-c2012-9.2) (#2908) 2020-11-18 10:50:35 +01:00
Ivar Andreas Bonsaksen 0e7ec1eddf
Fixed #9988 (false positive: misra-c2012-9.2) (#2904) 2020-11-16 17:31:00 +01:00
kskjerve 4d3f76b63c
MISRA rule 9.2 The initializer for an aggregate or union shall be enclosed in braces (#2899) 2020-11-16 09:27:17 +01:00
Daniel Marjamäki 43c4a48d48 Fixed #9971 (missing system includes in addon/test test files) 2020-11-15 12:46:28 +01:00
Daniel Marjamäki 9a81d17a58 cppcheckdata: Add Scope.varlist 2020-11-13 21:03:02 +01:00
Daniel Marjamäki c7f816f986 Misra refactorings 2020-11-13 07:21:34 +01:00
Lars Even Almaas 3a91b998d6
MISRA rule 10.2 Expressions of essentially character type in additions and subtraction (#2897) 2020-11-12 11:37:28 +01:00
Daniel Marjamäki 2ae91b9ffe Try to fix addon suppressions tests 2020-11-11 20:28:26 +01:00
Daniel Marjamäki 1ce78a1086 Addons: handle inline suppressions internally in cppcheckdata 2020-11-11 20:01:58 +01:00
Daniel Marjamäki 7e8839a991 Addons: Reuse cppcheckdata.simpleMatch 2020-11-11 14:24:55 +01:00
Lars Even Almaas 9d70926fcd
MISRA rule 15.4 Only one break/goto from iteration statement (#2892) 2020-11-09 15:11:08 +01:00
Georgy Komarov 9cbb09076c
misra.py: Fix R7.2 crash on va_args (#2886) 2020-11-05 23:54:12 +01:00
Lars Even Almaas c1212f823f
MISRA rule 7.2 Require 'u' prefix when using large unsigned integer constants (#2881) 2020-11-05 13:38:09 +01:00
Georgy Komarov 6f7f508967
misra.py: Fix 7.4 false positive (#2883)
Fix false positives for the function calls with "const pointer to const
value" arguments: https://trac.cppcheck.net/ticket/9967.

The variable.valueType.constness have same encoding as encoding as
ValueType::constness in Cppcheck.
2020-11-05 08:13:23 +01:00
Lars Even Almaas 05b804d126
MISRA Rule 7.4 Check if variables assigned as string literals are const (#2866) 2020-11-04 13:45:02 +01:00
Georgy Komarov b87aaaac52
Fix and impove MISRA 6.1 and 6.2 rules (#2863) 2020-10-28 20:54:43 +01:00
Lars Even Almaas 79b9dd5345
MISRA Rule 6.1/6.2 Bit field check (#2861) 2020-10-27 16:00:19 +01:00