The attribute movedValue is misspelled with an uppercase V, this leads
to errors when printing token values:
```
$ python3 runaddon.py test.py test.c.dump
Checking test.c.dump...
Checking test.c.dump, config ...
line 2 str=""lala\n""
Traceback (most recent call last):
File "/home/eric/tools/cppcheck/addons/runaddon.py", line 11, in <module>
cppcheck.runcheckers()
File "/home/eric/tools/cppcheck/addons/cppcheck.py", line 39, in runcheckers
c(cfg, data)
File "test.py", line 9, in func
print(f' {value}')
File "/home/eric/tools/cppcheck/addons/cppcheckdata.py", line 907, in __repr__
", ".join(("{}={}".format(a, repr(getattr(self, a))) for a in attrs))
File "/home/eric/tools/cppcheck/addons/cppcheckdata.py", line 907, in <genexpr>
", ".join(("{}={}".format(a, repr(getattr(self, a))) for a in attrs))
AttributeError: 'Value' object has no attribute 'movedValue'
```
This fixes a crash with following error:
```
Traceback (most recent call last):
File "/usr/local/share/Cppcheck/addons/runaddon.py", line 8, in <module>
runpy.run_path(addon, run_name='__main__')
File "<frozen runpy>", line 291, in run_path
File "<frozen runpy>", line 98, in _run_module_code
File "<frozen runpy>", line 88, in _run_code
File "/usr/local/share/Cppcheck/addons/misra.py", line 4737, in <module>
main()
File "/usr/local/share/Cppcheck/addons/misra.py", line 4679, in main
checker.parseDump(item)
File "/usr/local/share/Cppcheck/addons/misra.py", line 4335, in parseDump
self.executeCheck(902, self.misra_9_2, cfg)
File "/usr/local/share/Cppcheck/addons/misra.py", line 4246, in executeCheck
check_function(*args)
File "/usr/local/share/Cppcheck/addons/misra.py", line 2104, in misra_9_2
misra_9.misra_9_x(self, data, 902)
File "/usr/local/share/Cppcheck/addons/misra_9.py", line 414, in misra_9_x
parser.parseInitializer(ed, eq.astOperand2)
File "/usr/local/share/Cppcheck/addons/misra_9.py", line 320, in parseInitializer
child = self.root.getChildByValueElement(self.ed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'getChildByValueElement'
```
A minimal example and testcase is added.
The extra check for nextChild seems to fix it, however i did not read
the whole codebase, so maybe this creates other issues.
---------
Co-authored-by: Tim Blume <tbl@sevenstax-intern.de>
I also changed the comment header to run tests on misra-test-avr8.c
because I thought that was the intention to use it like misra-test.c; if
not, I can revert.
* Update cppcheckdata.py
- added links to cpp-file/function that writes this part of the dump-file
- updated documentation (Added list of possible return values for a number of variables)
- added MacroUsage isKnownValue
- added ValueType reference
- added Token isBoolean
- added Token isCast
- added Token externLang
- added Token isComplex
- added Token isRestrict
- added Token isAttributeExport
- added Token originalName
- added Scope functions
- added Scope definedType
- added Function hasVirtualSpecifier
- removed Function isVirtual
- added Function isAttributeNoreturn
- added Function overriddenFunction
- added Variable isVolatile
- class Container added
- added Value movedValue
- added Value uninit
- added Value bufferSize
- removed Value inconclusive and added it to valueKind
* Update cppcheckdata.py
removed encoding from open (needed to make python 2.7 check pass) where python 2.7 should not be used anymore
* Update cppcheckdata.py after feedback
made sure that attributes I added to the class always have a value
added some missing attributes in the print
* misra: fix misra-3_1 false positive for URIs in block comments
* added unit test, improved new misra 3.1 based on false positives
---------
Co-authored-by: Paul B <unconfigured@null.spigotmc.org>
* Speed up analyses of .ctu_info files
Use temporary dictionaries to eliminate duplicate typedefs,
tags and macros
* Consistency: use a cache key variable
Ensures that the get and add use the same key.
* CTU perf: use dict for macros, tags & types.