–
___ ____ __ ___ _________
/ | / _ |/ / / / | / /__ __/ 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