forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a target to use the Coccinelle checker
A 'coccicheck' target is added. It can be called with four different modes. Each one generates a different kind of output, i.e. context, patch, org, report, according to the corresponding mode to be activated. The new target calls the 'coccicheck' front-end in the 'scripts' directory with the MODE argument. Every SmPL file in the subdirectories of 'scripts/coccinelle' is then given to the front-end and applied to the entire source tree. The four modes behave as follows: 'report' generates a list in the following format: file:line:column-column: message 'patch' proposes a fix, when possible. 'context' highlights lines of interest and their context in a diff-like style. Lines of interest are indicated with '-'. 'org' generates a report in the Org mode format of Emacs. Signed-off-by: Nicolas Palix <[email protected]> Signed-off-by: Julia Lawall <[email protected]> Acked-by: Sam Ravnborg <[email protected]> Acked-by: Joerg Roedel <[email protected]> Signed-off-by: Michal Marek <[email protected]>
- Loading branch information
Showing
4 changed files
with
74 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1476,6 +1476,16 @@ M: Daniel Oliveira Nascimento <[email protected]> | |
S: Supported | ||
F: drivers/platform/x86/classmate-laptop.c | ||
|
||
COCCINELLE/Semantic Patches (SmPL) | ||
M: Julia Lawall <[email protected]> | ||
M: Gilles Muller <[email protected]> | ||
M: Nicolas Palix <[email protected]> | ||
L: [email protected] (moderated for non-subscribers) | ||
W: http://coccinelle.lip6.fr/ | ||
S: Supported | ||
F: scripts/coccinelle/ | ||
F: scripts/coccicheck | ||
|
||
CODA FILE SYSTEM | ||
M: Jan Harkes <[email protected]> | ||
M: [email protected] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
|
||
checker-help: | ||
@echo ' coccicheck - Check with Coccinelle.' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/bin/sh | ||
|
||
SPATCH="`which ${SPATCH:=spatch}`" | ||
|
||
if [ ! -x "$SPATCH" ]; then | ||
echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/' | ||
exit 1 | ||
fi | ||
|
||
if [ "$MODE" = "" ] ; then | ||
echo 'You have not explicitly specify the mode to use. Fallback to "report".' | ||
echo 'You can specify the mode with "make coccicheck MODE=<mode>"' | ||
echo 'Available modes are: report, patch, context, org' | ||
MODE="report" | ||
fi | ||
|
||
echo '' | ||
echo 'Please check for false positives in the output before submitting a patch.' | ||
echo 'When using "patch" mode, carefully review the patch before submitting it.' | ||
echo '' | ||
|
||
function coccinelle { | ||
COCCI="$1" | ||
DIR="$2" | ||
|
||
OPT=`grep "Option" $COCCI | cut -d':' -f2` | ||
FILE=`echo $COCCI | sed "s|$DIR/||"` | ||
|
||
echo "Processing `basename $COCCI` with option(s) \"$OPT\"" | ||
echo 'Message example to submit a patch:' | ||
|
||
sed -e '/\/\/\//!d' -e 's|^///||' $COCCI | ||
|
||
echo ' The semantic patch that makes this change is available' | ||
echo " in $FILE." | ||
echo '' | ||
echo ' More information about semantic patching is available at' | ||
echo ' http://coccinelle.lip6.fr/' | ||
echo '' | ||
|
||
# The option '-parse_cocci' can be used to syntaxically check the SmPL files. | ||
# | ||
# $SPATCH -D $MODE -very_quiet -parse_cocci $COCCI $OPT > /dev/null | ||
|
||
$SPATCH -D $MODE -very_quiet -sp_file $COCCI $OPT -dir $DIR | ||
} | ||
|
||
if [ "$COCCI" = "" ] ; then | ||
for f in `find $srctree/scripts/coccinelle/ -name '*.cocci' -type f | sort`; do | ||
coccinelle $f $srctree; | ||
done | ||
else | ||
coccinelle $COCCI $srctree | ||
fi |