Coccinelle: Update documentation
- Add information about use of the C={1,2} make flag - Add a description of the new chain mode mechanism - Add a link to the wiki Signed-off-by: Nicolas Palix <npalix.work@gmail.com> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
parent
af78f21712
commit
32af08987b
|
@ -24,6 +24,9 @@ of many distributions, e.g. :
|
||||||
You can get the latest version released from the Coccinelle homepage at
|
You can get the latest version released from the Coccinelle homepage at
|
||||||
http://coccinelle.lip6.fr/
|
http://coccinelle.lip6.fr/
|
||||||
|
|
||||||
|
Information and tips about Coccinelle are also provided on the wiki
|
||||||
|
pages at http://cocci.ekstranet.diku.dk/wiki/doku.php
|
||||||
|
|
||||||
Once you have it, run the following command:
|
Once you have it, run the following command:
|
||||||
|
|
||||||
./configure
|
./configure
|
||||||
|
@ -41,20 +44,22 @@ A Coccinelle-specific target is defined in the top level
|
||||||
Makefile. This target is named 'coccicheck' and calls the 'coccicheck'
|
Makefile. This target is named 'coccicheck' and calls the 'coccicheck'
|
||||||
front-end in the 'scripts' directory.
|
front-end in the 'scripts' directory.
|
||||||
|
|
||||||
Four modes are defined: report, patch, context, and org. The mode to
|
Four modes are defined: patch, report, context, and org. The mode to
|
||||||
use is specified by setting the MODE variable with 'MODE=<mode>'.
|
use is specified by setting the MODE variable with 'MODE=<mode>'.
|
||||||
|
|
||||||
|
'patch' proposes a fix, when possible.
|
||||||
|
|
||||||
'report' generates a list in the following format:
|
'report' generates a list in the following format:
|
||||||
file:line:column-column: message
|
file:line:column-column: message
|
||||||
|
|
||||||
'patch' proposes a fix, when possible.
|
|
||||||
|
|
||||||
'context' highlights lines of interest and their context in a
|
'context' highlights lines of interest and their context in a
|
||||||
diff-like style.Lines of interest are indicated with '-'.
|
diff-like style.Lines of interest are indicated with '-'.
|
||||||
|
|
||||||
'org' generates a report in the Org mode format of Emacs.
|
'org' generates a report in the Org mode format of Emacs.
|
||||||
|
|
||||||
Note that not all semantic patches implement all modes.
|
Note that not all semantic patches implement all modes. For easy use
|
||||||
|
of Coccinelle, the default mode is "chain" which tries the previous
|
||||||
|
modes in the order above until one succeeds.
|
||||||
|
|
||||||
To make a report for every semantic patch, run the following command:
|
To make a report for every semantic patch, run the following command:
|
||||||
|
|
||||||
|
@ -68,9 +73,9 @@ To produce patches, run:
|
||||||
|
|
||||||
|
|
||||||
The coccicheck target applies every semantic patch available in the
|
The coccicheck target applies every semantic patch available in the
|
||||||
subdirectories of 'scripts/coccinelle' to the entire Linux kernel.
|
sub-directories of 'scripts/coccinelle' to the entire Linux kernel.
|
||||||
|
|
||||||
For each semantic patch, a changelog message is proposed. It gives a
|
For each semantic patch, a commit message is proposed. It gives a
|
||||||
description of the problem being checked by the semantic patch, and
|
description of the problem being checked by the semantic patch, and
|
||||||
includes a reference to Coccinelle.
|
includes a reference to Coccinelle.
|
||||||
|
|
||||||
|
@ -93,12 +98,35 @@ or
|
||||||
make coccicheck COCCI=<my_SP.cocci> MODE=report
|
make coccicheck COCCI=<my_SP.cocci> MODE=report
|
||||||
|
|
||||||
|
|
||||||
|
Using Coccinelle on (modified) files
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To apply Coccinelle on a file basis, instead of a directory basis, the
|
||||||
|
following command may be used:
|
||||||
|
|
||||||
|
make C=1 CHECK="scripts/coccicheck"
|
||||||
|
|
||||||
|
To check only newly edited code, use the value 2 for the C flag, i.e.
|
||||||
|
|
||||||
|
make C=2 CHECK="scripts/coccicheck"
|
||||||
|
|
||||||
|
This runs every semantic patch in scripts/coccinelle by default. The
|
||||||
|
COCCI variable may additionally be used to only apply a single
|
||||||
|
semantic patch as shown in the previous section.
|
||||||
|
|
||||||
|
The "chain" mode is the default. You can select another one with the
|
||||||
|
MODE variable explained above.
|
||||||
|
|
||||||
|
In this mode, there is no information about semantic patches
|
||||||
|
displayed, and no commit message proposed.
|
||||||
|
|
||||||
|
|
||||||
Proposing new semantic patches
|
Proposing new semantic patches
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
New semantic patches can be proposed and submitted by kernel
|
New semantic patches can be proposed and submitted by kernel
|
||||||
developers. For sake of clarity, they should be organized in the
|
developers. For sake of clarity, they should be organized in the
|
||||||
subdirectories of 'scripts/coccinelle/'.
|
sub-directories of 'scripts/coccinelle/'.
|
||||||
|
|
||||||
|
|
||||||
Detailed description of the 'report' mode
|
Detailed description of the 'report' mode
|
||||||
|
|
Reference in New Issue