346 Commits

Author SHA1 Message Date
versat
dc1cdd2b76 addons/test/test-*.py: Improve documentation about running the tests 2019-09-20 13:39:38 +02:00
Richard A. Smith
2b44fb57bc Loosen restrictions on MISRA rules text structure ()
Version 1.88 changed the parsing of the MISRA rules file adding a
severity setting.  This caused a regression in rule parsing.

In particular the following format used to parse cleanly and produce
rule output that would show the severity as part of the rule text.

    Rule 1.2

    Advisory

    Rule text goes here.

    Rule 1.3

    Required

    More rule text goes here.

As of 1.88 a file structured like above would parse as having no rules.

The problem is the use of blank lines as a rule delimiter.   The
modified rule parser wants to see a rules formatted like below:

    Rule 3.1 Required
    R3.1 text.
    Rule 4.1 Required
    R4.1 text.

or:

    Rule 1.1
    Add this rule and parse to next, skipping empty lines.

    Rule 1.2
    Rule text.

Any rule text that did not fall into one of the above formats would
result in incomplete rule text parsing.

Change the parsing of the rule text file so that blank lines are ignored
instead of treating them as a delimiter between rules. Instead use the
start of the next rule as a delimiter for the end of the previous rule.
This allows both of the newer formats but also supports the behavior of
pre-1.88 versions.

Change units tests that were specifically forbidding the use of blank
lines to ones that allow blank lines.
2019-09-09 21:43:44 +02:00
IOBYTE
e5220bdf0c make ellipsis ... a single token ()
* make ellipsis ... a single token

Using cppcheck -E to preprocess code with ellipsis produces output that
can't be compiled because ... is split into 3 tokens.

* try to fix addon
2019-09-04 08:07:30 +02:00
Conrado Gouvea
3740c57160 misra: fix rule 5.4 false positive when macro is defined 'twice' inside #if/#else () 2019-08-31 07:53:16 +02:00
Daniel Marjamäki
2d9a131817 Refactoring: Rename variables. Do not use leading _. Renamed 'col' to 'column' 2019-08-18 12:19:05 +02:00
Daniel Marjamäki
f33a8a417f Put 'isExpandedMacro' info in the dump files 2019-08-15 14:24:56 +02:00
Daniel Marjamäki
2e9e3ed2f1 Fixed (false positive: MISRA rule 16.3) 2019-08-11 19:08:57 +02:00
Daniel Marjamäki
016340f77d Fixed (false postive: MISRA rule 15.7) 2019-08-11 17:54:02 +02:00
Daniel Marjamäki
46c93779d8 misra: updated getEssentialType 2019-08-11 10:15:07 +02:00
Daniel Marjamäki
43aabcd318 Fixed (false positive: MISRA rule 10.1) 2019-08-11 09:47:37 +02:00
Daniel Marjamäki
8c7ae14f0b misra: python refactorings 2019-08-10 18:12:23 +02:00
Armin Müller
785cc69644 Typos found by running "codespell" () 2019-08-08 21:05:28 +02:00
Daniel Marjamäki
996000da52 Fixed (MISRA addon crashes on enum with constant expression) 2019-08-04 12:24:45 +02:00
Georgy Komarov
e88e024509 Addons: Add README ()
* Addons: Add README

* fix
2019-07-28 07:51:03 +02:00
Georgy Komarov
fe2885e430 cert.py: Refactor arguments handling ()
* cert.py: Add '--quiet' option and test

Main sentinel also was required.

* travis.yml: Install pytest with --user

To avoid possible conflicts with system packages later.

* Quickfix
2019-07-26 15:40:25 +02:00
Georgy Komarov
fbd7b5180b Update addons structure. Make Y2038 addon works. ()
* Update addons structure. Make Y2038 addon works.

All addons are now located in same directory, where cppcheck-gui is
looking for them.

Y2038 addon has been updated to latest cppcheck version. Output is same
as 303622f01c01ca5acdac2504f2dab442b5343cab commit as it described in
README: 303622f01c/addons/y2038/README.

* Clean up .travis.yml

* Update travis.yml paths.

* misra.py: Bring back -P argument for backward compatibility

* Fix paths

* Normalize dumpfile paths tpo cppcheck format

* Fixup 3 test.

* Add arguments regression test.

* Fixing travis build
2019-07-26 06:38:03 +02:00
Sebastian
8f92c43567
.travis.yml: Check more Python scripts with pylint ()
Use renamed pylintrc file that is only meant for Travis checks.

Check all Python scripts in 'addons', 'htmlreport' and 'tools'

Errors for `_socketobject` class are disabled, see
https://stackoverflow.com/questions/10300082/how-to-prevent-python-pylint-complaining-about-socket-class-sendall-method

Install imported modules `unittest2` and `pexpect` via pip.

Add "./addons" to search-path for modules because
"tools/compare-ast-clang-and-cppcheck.py" imports cppcheckdata.py from
addons. Pylint does not seem to evaluate
`sys.path.insert(0, '../addons')` in the script. So an `init-hook` is
necessary in pylintrc_travis.
2019-07-24 21:09:53 +02:00
fuzzelhjb
cc63728d6a add support for CERT-API01-C check ()
* add support for CERT-API01-C check

* remove extra ident and simplify check
2019-07-24 10:39:31 +02:00
Georgy Komarov
6bd1c92c24 misra.py: Bring back -P argument for backward compatibility ()
* misra.py: Bring back -P argument for backward compatibility

* Restore --file-prefix logic

* Add arguments regression test
2019-07-24 07:16:48 +02:00
amai2012
453de18101
Run pylint on addons providing a buld breaker on travis ()
* Run pylint (using a pylintrc file) on the addon Python scripts. It serves as a build breaker for severe issues.
* Skip y2038 addon for now until it's fixed.
2019-07-18 20:51:58 +02:00
Georgy Komarov
413a5a4865 MISRA: Fix rules suppression, add tests ()
* MISRA: Fix suppressed rules line numbers

Line numbers represented as strings in lxml ETree, but we use it in
integer comparison later.

* MISRA: Use standard library function instead file_prefix.

* MISRA: Use pytest's capsys for capturing, add suppressions tests.

* travis.yml: Update pytest version
2019-07-16 22:32:41 +02:00
Daniel Marjamäki
bd6f2c17fa Misra: Fix my code 2019-07-13 15:17:19 +02:00
Daniel Marjamäki
f524bf79ad Misra: Added 17.2 checker 2019-07-13 15:10:07 +02:00
Daniel Marjamäki
29f5f59242 Revert "Revert "Add MISRA 18.4 check ()""
This reverts commit 9b674fa3062927608728ac1ee405eb5788c94a2f.
2019-07-09 15:57:12 +02:00
Georgy Komarov
4eb362352d Fixup MISRA 5.1 () 2019-07-09 15:53:23 +02:00
Daniel Marjamäki
9b674fa306 Revert "Add MISRA 18.4 check ()"
This reverts commit 3ff7ef091829835be19f268310ad5a10a392e7f4.
2019-07-08 08:10:25 +02:00
Georgy Komarov
3ff7ef0918 Add MISRA 18.4 check ()
* Add MISRA 18.4 check

* Fixup

* Quickfix
2019-07-07 21:54:08 +02:00
fuzzelhjb
999aa407f4 add CERT MSC24-C check ()
* add CERT MSC24-C check

* make check a bit more robust

* fix cert tester

* finetune MSC24 check
2019-07-04 12:19:52 +02:00
fuzzelhjb
1887bd3cf0 add CERT STR11-C check ()
* add CERT STR11-C check

* fix some logical checks

* fix merge issue

* update str11 check
2019-07-02 11:44:24 +02:00
Georgy Komarov
f8c350fc70 misra.py: Add R18.7 check ()
* misra.py: Add 18.7 check

* Simplify R18.7 check

* use token.link

* Remove isStruct method
2019-07-01 07:00:43 +02:00
Sebastian
2c71b47d4e
Addons scripts: Remove redundant code/characters, fix indentation. () 2019-06-27 06:59:47 +02:00
fuzzelhjb
9a7ecd622c add CERT exp15-c check ()
* add CERT exp15-c check

* fix false positive

* remove useless check

* fine tune check and test
2019-06-26 18:49:47 +02:00
Georgy Komarov
be5778c416 misra.py: Expand ~ in file paths () 2019-06-26 07:30:08 +02:00
Sebastian
ba0ca5d087
addons/misra.py: Fix comparison instead of assignment () 2019-06-25 19:18:31 +02:00
Sebastian
d1386112a9
addons/cppcheckdata.py: Fix missing self, and wrong assignment. ()
I am not sure but it looks like "self." is missing here.
And the attribute "inconclusive" is initialized as a "bool", so i guess
"True" should be assigned here?
2019-06-25 19:16:57 +02:00
Georgy Komarov
5d58b14db8 misra.py: Update output according c97dc79 () 2019-06-25 00:42:13 +02:00
Daniel Marjamäki
c97dc79815 --addon: Use json for addon output 2019-06-24 19:29:43 +02:00
fuzzelhjb
f36d671bc5 add CERT STR03-C check ()
* add CERT STR03-C check

* fix cert test
2019-06-24 18:41:43 +02:00
Georgy Komarov
05bb4a0c8f misra.py: Fixup rules severity ()
* misra.py: Fixup rules severity

* Divide cppcheck and MISRA severity.
2019-06-23 14:08:05 +02:00
Daniel Marjamäki
bd59999fd0 cert.py: Use cppcheck.getArguments instead of local implementation 2019-06-23 14:05:24 +02:00
fuzzelhjb
8fcfe0ceb0 add CERT STR07-C check 2019-06-23 13:59:24 +02:00
Daniel Marjamäki
63bd29d644 addons/cppcheckdata.py: Add 'cppcheckdata.getArguments' function 2019-06-23 13:54:33 +02:00
Georgy Komarov
02cc9ffcd8 misra.py: Add --verify-rule-texts option. ()
* misra.py: Add verify-rule-texts option.

* Capture stdout output in travis.
2019-06-19 21:57:27 +02:00
Georgy Komarov
e979b0652c misra.py: Fix up and improve load rules parser. ()
* misra.py: Fixup load rules parser.

* misra.py: Report when rule text is missing in rule-texts file

* misra.py: Allow to skip misra checks not specified in rule-texts.

* misra.py: Remove top-level control flow.

Create separate class that stores settings, instead of global variables.

This is required to perform imports from misra.py for testing purposes.

* misra.py: Add simple pytest test for load rules.

* misra.py: Add document structure tests.

* misra.py: Exit after show rules table.

* misra.py: Add document structure tests.

* misra.py: Fixup import pitfall with python2

* misra.py: Minor fixes
2019-06-17 21:17:29 +02:00
fuzzelhjb
5e3da9e82a add CERT STR05-C check ()
* add CERT STR05-C check

* update check
2019-06-17 20:42:23 +02:00
eivindt
44670005ea Record C/CPP/Posix Standard used for cppcheck in dump file / use this for misra checking ()
* Add cmd parameter for choosing between C90 and C99

Misra specifies different requirements to the uniqueness of
macros/enums/variables depending on what C standard
that's being used.

* Add standards configuration to each dump file

Read standards config from misra addon to decide what rules to use.

* Posix as standard setting should be deprecated.  Don't include this in the xml

* Rewritten to use a switch
2019-06-14 12:06:57 +02:00
Daniel Marjamäki
1584e62367 cppcheckdata: Added 'simpleMatch' function 2019-06-06 15:38:15 +02:00
Daniel Marjamäki
784f2951fb misra: generating misra table 2019-06-01 15:57:19 +02:00
Daniel Marjamäki
7c6d15bb81 Fixed (false positive: MISRA rule 8.12) 2019-06-01 13:10:20 +02:00
Daniel Marjamäki
f204ab88d6 misra feature matrix: I believe Cppcheck handle rule 14.3 2019-05-27 17:28:59 +02:00