cppcheck code inspect fails on samd boards
#3,951 opened on May 11, 2021
Repository metrics
- Stars
- (7,329 stars)
- PR merge metrics
- (Avg merge 109d 16h) (5 merged PRs in 30d)
Description
Configuration
Operating system: Ubuntu 20.04 5.4.0-73-generic #82-Ubuntu x86_64 x
PlatformIO Version (platformio --version): PlatformIO Core, version 5.1.1
Description of problem
When Inspect (pio check -v) is run against a SAMD based project the cppcheck code analysis fails with the following error:
Error: Found a breaking defect 'failed to expand 'SAMD_SERIES', Invalid ## usage when expanding 'part_is_defined'.' in /home/jimh/.platformio/packages/framework-cmsis-atmel/CMSIS/Device/ATMEL/sam.h:32
Please note: check results might not be valid!
Try adding --skip-packages
"severity=error<&PIO&>message=failed to expand 'SAMD_SERIES', Invalid ## usage when expanding 'part_is_defined'.<&PIO&>file=/home/jimh/.platformio/packages/framework-cmsis-atmel/CMSIS/Device/ATMEL/sam.h<&PIO&>line=32<&PIO&>column=0<&PIO&>callstack=[/home/jimh/.platformio/packages/framework-cmsis-atmel/CMSIS/Device/ATMEL/sam.h:32]<&PIO&>cwe=0<&PIO&>id=preprocessorErrorDirective"
Running check with --skip-packages works (pio check -v --skip-packages):
Component HIGH MEDIUM LOW
----------- ------ -------- -----
*/.pio 0 0 1
nofile 0 0 1
src 0 0 4
Total 0 0 6
Environment Tool Status Duration
------------------- -------- -------- ------------
uno cppcheck PASSED 00:00:00.711
adafruit_feather_m0 cppcheck PASSED 00:00:00.714
Attached zip file has a minimal project that is able to reproduce the problem. It has two environments setup; one for an UNO and one for a SAMD (Adafruit Feather M0).
Uno env wil pass cppcheck / SAMD fails.
Steps to Reproduce
- Open attached project
- Run Inspect or pio check
- Error occurs on SAMD
Actual Results
See above
Expected Results
Expect check using cppcheck to complete without failure
If problems with PlatformIO Build System:
The content of platformio.ini:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:uno]
platform = atmelavr
board = uno
framework = arduino
check_tool = cppcheck
[env:adafruit_feather_m0]
platform = atmelsam
board = adafruit_feather_m0
framework = arduino
check_tool = cppcheck
Source file to reproduce issue:
/**
* Blink
*
* Turns on an LED on for one second,
* then off for one second, repeatedly.
*/
#include "Arduino.h"
const int delayTime =1000;
// Set LED_BUILTIN if it is not defined by Arduino framework
// #define LED_BUILTIN 13
void setup()
{
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
// turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN, HIGH);
// wait for a second
delay(delayTime);
// turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN, LOW);
// wait for a second
delay(delayTime);
}
Additional info
Test Project: