Skip to content

deltalejo/ceedling-cppcheck-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cppcheck Ceedling Plugin

Add Ceedling task for analyzing code with Cppcheck.

Contents

Installation

Clone this into Ceedling's plugin folder of your current project.

$ cd <your-project>/vendor/ceedling/plugins
$ git clone https://github.com/deltalejo/cppcheck-ceedling-plugin.git cppcheck

Enable the plugin

Add the plugins path to your project.yml if you have not done it yet. Then add cppcheck plugin to the enabled plugins list:

:plugins:
  :load_paths:
    - vendor/ceedling/plugins
  :enabled:
    - cppcheck

Configuration

Add cppcheck section to your project.yml specifying configuration options. e.g:

:cppcheck:
  :reports:
    - html
  :addons:
    - misra

Reports

Three types of reports are available:

  • text
  • xml
  • html

They can be enabled by listing them on the :reports list:

:cppcheck:
  :reports:
    - text
    - html

Text

Artifact file and output format can be configured:

:cppcheck:
  :text_artifact_filename: CppcheckResults.txt
  :template: gcc

:template can be any of the ones included with Cppcheck or custom format string.

XML

Artifact file can be configured:

:cppcheck:
  :xml_artifact_filename: CppcheckResults.xml

HTML

HTML title can be configured:

:cppcheck:
  :html_title: Awesome Project

Notes:

  • This report requires the cppcheck-htmlreport tool to be available.
  • This report implies the xml report.

Import project file

You can import some project files and build configurations into Cppcheck. Some of compatible files are:

  • Cppcheck GUI project (*.cppcheck)
  • Compile Commands (compile_commands.json)
  • Visual Studio projects (*.vcxproj, *.sln)
:cppcheck:
  :project: path/to/compile_commands.json

Note: If configured, Cppcheck won't look for sources and includes paths from Ceedling configuration files.

Preprocessor defines

Define

:cppcheck:
  :defines:
    - A
    - B
    - C=1

Undefine

:cppcheck:
  :undefines:
    - A
    - B
    - C

Note: By default TEST is undefined so the analysis is performed against production code.

Includes

Force inclusion of files before checked files.

:cppcheck:
  :includes:
    - file1.h
    - file2.h

Excludes

Exclude files from the analysis.

:cppcheck:
  :excludes:
    - file1.c
    - file2.c

Platform

Specify platform to use for the analysis, can be any of the ones included with Cppcheck, e.g.: unix64, or the path of the platform XML file.

:cppcheck:
  :platform: unix64

Standard

Specify C/C++ language standard.

:cppcheck:
  :standard: c99

Check Level

Specify the check level to be used.

  • normal
  • exhaustive
:cppcheck:
  :check_level: exhaustive

Addons

Addons to be run.

:cppcheck:
  :addons:
    - misra
    - path/to/addon.py

MISRA with rule texts file

Locate your rules text file or copy it to your project. e.g.: <your-project>/misra.txt and create the addon file misra.json inside your project:

misra.json
{
	"script": "misra",
	"args": ["--rule-texts=misra.txt"]
}

Enable the addon:

:cppcheck:
  :addons:
    - misra.json

Checks

Enable additional checks. Default is style.

:cppcheck:
  :enable_checks:
    - performance
    - portability

Note: These are only used for single file analysis. Whole project analysis always enable all checks.

Disable individual checks:

:cppcheck:
  :disable_checks:
    - style
    - information

Suppressions

Inline

Inline suppressions are disabled by default, they can be enabled with:

:cppcheck:
  :inline_suppressions: true

List Files

Suppressions files can be used by giving the search paths and/or files in the :paths and :files sections of your project.yml respectively. e.g.:

:paths:
  :cppcheck:
    - suppressions/
    - source/*/suppressions/

:files:
  :cppcheck:
    - suppressions.xml

Both XML and text files are supported, and for the latter, the file extension can be configured. The default is .txt. e.g.:

:extension:
  :cppcheck: .txt

The files that will ultimately be used can be verified with:

$ ceedling files:cppcheck

Command Line

Command line suppressions can also be added:

:cppcheck:
  :suppressions:
    - memleak:src/file1.cpp
    - exceptNew:src/file1.cpp

Library configuration

Add library configuration files:

:cppcheck:
  :libraries:
    - lib1.cfg
    - lib2.cfg

Rules

Regular expression rules:

:cppcheck:
  :rules:
    - if \( p \) { free \( p \) ; }

Extra options

For things not covered above, add extra command line options:

:cppcheck:
  :options:
    - --max-configs=<limit>
    - --suppressions-list=<file>

Usage

Analyze whole project

Run analysis for all project sources:

$ ceedling cppcheck:all

Note: Analysis is run with all checks enabled.

Analyze single file

Run analysis for single source file:

$ ceedling cppcheck:<filename>

Note: Analysis will run with the checks in :enable_checks list enabled.

About

Cppcheck Ceedling Plugin

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages