___    ____  __    ___   _________
   /   |  / _  |/ /   / / | / /__  __/            Source Code Static Analyzer
  / /| | / / / / /   / /  |/ /  / /                    AdLint - Advanced Lint
 / __  |/ /_/ / /___/ / /|  /  / /
/_/  |_|_____/_____/_/_/ |_/  /_/    Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.

This file is part of adlint-postfilter.

adlint-postfilter is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.

adlint-postfilter is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details.

You should have received a copy of the GNU General Public License along with
adlint-postfilter.  If not, see <http://www.gnu.org/licenses/>.

++

What is

adlint-postfilter is an ad-hoc filtering wrapper for AdLint to suppress useless warning messages.

News

:include:NEWS

How to Install

:include:INSTALL

Interface

adlint_flt command

% adlint_flt --help
Usage: adlint_flt --analyze <analysis command line> | [other options]

Analysis Options:
  -A, --analyze                  Execute AdLint analysis command
  -V, --src-vpath DIR            Use DIR as VPATH (CMA only)

Other Options:
  -i, --install                  Generate adlint_filter.yml template
  -t, --transform                Transform project's GNUmakefile
  -f, --force                    Force to overwrite existing files
  -c, --config FILE              Use FILE as adlint-postfilter config
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of adlint-postfilter
  -h, --help                     Display this message

Project-wide message control file (adlint_postfilter.yml)

adlint_postfilter.yml file should be written in YAML format.

Syntax in informal BNF

adlint-postfilter-yml : message-traits-section

message-traits-section : "message_traits:" NEW_LINE suppression-list-section NEW_LINE individual-suppression-control-section NEW_LINE

suppression-list-section : SPACE SPACE "suppression_list:" NEW_LINE message-suppression-list

message-suppression-list :

| message-suppression-list message-suppression-record

message-suppression-record : SPACE SPACE SPACE SPACE "-" message-id NEW_LINE

message-id : A string exactly matches with regexp /[WC][0-9]{4}/

individual-suppression-control-section : SPACE SPACE "enable_individual_suppression_control:" SPACE boolean-value NEW_LINE

boolean-value : "true" | "false"

Example

% cat adlint_postfilter.yml
...snip...
message_traits:

  suppression_list:
    - W0001
    - W0002
    - W0003

  enable_individual_suppression_control : true
...snip...

Translation-unit-wide message control annotation

A translation-unit-wide message control annotation should be written as an ordinary comment of C language.

It can appear at any line in the target source file.

Syntax in informal BNF

tunit-wide-annotation : "/*" tunit-wide-message-controller "*/"
                      | "/*" arbitrary-comment tunit-wide-message-controller "*/"
                      | "/*" tunit-wide-message-controller arbitrary-comment "*/"
                      | "/*" arbitrary-comment tunit-wide-message-controller arbitrary-comment "*/"

arbitrary-comment : A sequence of any characters which does not match with regexp /ADLINT:TUNIT:/i

tunit-wide-message-controller : tunit-wide-message-control-head "[" message-control-list "]"

tunit-wide-message-control-head : "ADLINT:TUNIT:"

message-control-list : message-control
                     | message-control-list "," message-control

message-control : message-suppression-activation
                | message-suppression-deactivation

message-suppression-activation : "-" message-id

message-suppression-deactivation : "+" message-id

message-id : Described in `Project-wide message control file' section

Example

% head target.c
/* ADLINT:TUNIT:[-W0001,-W0002,+W0003] added by yanoh */
...snip...

Line-wise message control annotation

A line-wise message control annotation should be written as an ordinary comment of C language.

It should appear in the target line.

Syntax in informal BNF

line-wise-annotation : "/*" line-wise-message-controller "*/"
                     | "/*" arbitrary-comment line-wise-message-controller "*/"
                     | "/*" line-wise-message-controller arbitrary-comment "*/"
                     | "/*" arbitrary-comment line-wise-message-controller arbitrary-comment "*/"

arbitrary-comment : A sequence of any characters which does not match to regexp /ADLINT::/i and /ADLINT:LINE:/i

line-wise-message-controller : line-wise-message-control-head "[" message-control-list "]"

line-wise-message-control-head : "ADLINT::" | "ADLINT:LINE:"

message-control-list : Described in `Translation-unit-wide message control annotation' section

message-control : Described in `Translation-unit-wide message control annotation' section

message-suppression-activation : Described in `Translation-unit-wide message control annotation' section

message-suppression-deactivation : Described in `Translation-unit-wide message control annotation' section

message-id : Described in `Translation-unit-wide message control annotation' section

Example

% cat target.c
...snip...
const unsigned int ui1 = -1; /* ADLINT:LINE:[-W0607,+W0167] added by yanoh */
const unsigned int ui2 = -1; /* FIXME: ADLINT::[-W0607,+W0167] added by yanoh */
...snip...

License

Copyright © 2010-2012, OGIS-RI Co.,Ltd.

adlint-postfilter is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

adlint-postfilter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.

Authors

:include:AUTHORS