pio check

Helper command for Static Code Analysis.


pio check [OPTIONS]


Perform static analysis check on PlatformIO based project. By default Cppcheck analysis tool is used.

More details about PlatformIO Static Code Analysis.


-e, --environment

Process specified environments.


You can specify which source files or folders should be included/excluded from check process. By default only src_dir and include_dir are checked. Multiple --pattern options and GLOB Patterns are allowed.

Example: pio check --pattern="tests" --pattern="src/*.cpp"


Specify additional flags that need to be passed to the analysis tool. If multiple tools set in check_tool option, the flags are passed to all of them. Individual flags for each tool can be added using a special suffix with the tool name.




Execute addon. i.e. cert.


Define preprocessor symbol.

Multiple --flags options are allowed.

Example: pio check --flags "-DDEBUG cppcheck: --std=c++11 --platform=avr8"


Specify the Defect severity types which will be reported by the Check tools. Possible values described in Defect severity section. Multiple --severity options are allowed.

Example: pio check --severity=high

-d, --project-dir

Specify the path to project directory. By default, --project-dir is equal to the current working directory (CWD).

-c, --project-conf

Process project with a custom “platformio.ini” (Project Configuration File).


Return the output in JSON format.


Fail (exit with non-zero code) if there is a defect found with specified severity. By default exit code is the same as the exit code returned by a tool selected for performing check. Possible values described in Defect severity section. Multiple --fail-on-defect options are allowed.

Example: pio check --fail-on-defect=low --fail-on-defect=medium


Exclude underlying third-party packages from the checking process. By default, PlatformIO passes frameworks and toolchains include paths required by internal analysis tools to properly analyze project sources. Some of the supported analysis tools use their own preprocessor which may fail to parse perfectly valid code and thus provide empty or partial check reports. This option is useful when developers have no control over this third-party code and want to perform analysis at least on project sources.

Example: pio check --skip-packages

-s, --silent

Suppress progress reporting and show only defects with high severity. See Defect severity.

-v, --verbose

Show detailed information when processing environments.

This option can also be set globally using force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.


For the examples please follow to Static Code Analysis page.