Provided by: coccinelle_1.0.0~rc19.deb-3_amd64
NAME
spatch - apply a semantic patch file to a set of C files
SYNOPSIS
spatch -sp_file <SP> <files> [-o <outfile> ] [-iso_file <iso> ] [ options ]
DESCRIPTION
spatch is a program matching and transformation tool for C. The programmer describes the code to match and the transformation to perform as a semantic patch, which looks like a standard patch, but can transform multiple files at any number of code sites. Further information about spatch is available at http://coccinelle.lip6.fr/.
OPTIONS
Here is a summary of the most commonly used options: -sp_file <file> the semantic patch file -dir <dir> process all files in directory recursively -iso_file <file> (default=/usr/share/coccinelle/standard.iso) -macro_file <file> (default=/usr/share/coccinelle/standard.h) -debug print some information to help debug the matching process -all_includes causes all available include files to be used -no_includes causes not even local include files to be used -I <dir> the directory containing the include files -include_headers process header files independently -use_glimpse works with -dir, use information generated by glimpseindex -o <file> the output file. If none is specified, a patch is generated on the standard output -in_place do the modification on the file directly -out_place store modifications in a .cocci_res file -version show the version of spatch -date show the date on which spatch was compiled -shorthelp see short list of options -longhelp see all the available options in different categories -help, --help show summary of options.
EXAMPLES
./spatch -sp_file foo.cocci foo.c Apply the semantic patch foo.cocci to the C file foo.c. The semantic patch is applied modulo a set of isomorphisms contained in standard.iso (standard.iso is by default located in /usr/share/coccinelle/standard.iso). A patch showing the effect of the application, if any, will be generated on the standard output. ./spatch -sp_file foo.cocci foo.c -o /tmp/newfoo.c The same as the above, except that a modified version of foo.c is stored in /tmp/newfoo.c. It is also possible to apply spatch to all of the C files in a directory: ./spatch -cocci_file foo.cocci -dir foodir If the semantic patch is not working as expected, the option -debug shows selection of information about the application of a semantic patch to a file or directory.
MORE OPTIONS
MAIN OPTIONS --sp-file <file> the semantic patch file -o <file> the output file --in-place do the modification on the file directly --backup-suffix suffix to use when making a backup for inplace --out-place store modifications in a .cocci_res file --reverse invert the semantic patch before applying it -U set number of diff context lines --partial-match report partial matches of the SP on the C file --iso-file <file> (default=/usr/local/share/coccinelle/standard.iso) --macro-file <file> --macro-file-builtins <file> (default=/usr/local/share/coccinelle/standard.h) --recursive-includes causes all available include files, both those included in the C file(s) and those included in header files, to be used --all-includes causes all available include files included in the C file(s) to be used --no-includes causes not even local include files to be used --local-includes causes local include files to be used --ignore-unknown-options For integration in a toolchain (must be set before the first unknown option) --include-headers process header files independently -I <dir> containing the header files (optional) --preprocess run the C preprocessor before applying the semantic match -c gcc/cpp compatibility mode --dir <dir> process all files in directory recursively --use-glimpse works with -dir, use info generated by glimpseindex --use-google find relevant files using google code search --use-idutils find relevant files using id-utils --patch <dir> path name with respect to which a patch should be created "" for a file in the current directory --kbuild-info <file> improve -dir by grouping related c files --pyoutput Sets output routine: Standard values: <coccilib.output.Gtk|coccilib.output.Console> --version guess what --date guess what --shorthelp see short list of options --longhelp see all the available options in different categories ALIASES AND OBSOLETE OPTIONS --sp command line semantic patch --iso short option of --iso-file --cocci-file <file> the semantic patch file MOST USEFUL SHOW OPTIONS --show-diff --no-show-diff --force-diffshow diff even if only spacing changes --show-flow --ctl-inline-let --ctl-show-mcodekind --show-bindings --show-transinfo --show-misc --show-trying show the name of each function being processed --show-dependencies show the dependencies related to each rule VERBOSE SUBSYSTEMS OPTIONS --verbose-ctl-engine --verbose-match --verbose-engine --graphical-trace generate a pdf file representing the matching process --gt-without-label remove graph label (requires option -graphical-trace) --parse-error-msg --verbose-parsing --type-error-msg OTHER SHOW OPTIONS --show-c --show-cocci --show-before-fixed-flow --show-ctl-tex --show-ctl-text --show-SP DEBUG C PARSING/UNPARSING --debug-cpp --debug-lexer --debug-etdt --debug-typedef --filter-msg filter some cpp message when the macro is a "known" cpp construct --filter-define-error --filter-msg-define-error filter the error msg --filter-passed-level --debug-unparsing SHORTCUT FOR ENABLING/DISABLING A SET OF DEBUGGING OPTIONS AT ONCE --quiet --very-quiet --debug --pad BENCH OPTIONS --profile gather timing information about the main coccinelle functions --bench <level> for profiling the CTL engine --timeout <sec> timeout in seconds --steps max number of model checking steps per code unit --iso-limit max depth of iso application --no-iso-limit disable limit on max depth of iso application --track-iso gather information about isomorphism usage --disable-iso disable a specific isomorphism --profile-iso gather information about the cost of isomorphism usage CHANGE OF ALGORITHM OPTIONS --keep-comments keep comments around removed code --loop --no-loops drop all back edges derived from looping constructs - unsafe --no-gotos drop all jumps derived from gotos - unsafe --no-saved-typedefs drop all inferred typedefs from one parse of some code to the next --ocaml-regexps use OCaml Str regular expressions for constraints --l1 --ifdef-to-if convert ifdef to if (experimental) --no-ifdef-to-if convert ifdef to if (experimental) --disable-multi-pass --noif0-passing --defined --undefined --noadd-typedef-root --disallow-nested-exps disallow an expresion pattern from matching a term and its subterm --disable-worth-trying-opt --only-return-is-error-exitif this flag is not set, then break and continue are also error exits --allow-inconsistent-paths if this flag is set don't check for inconsistent paths; dangerous --no-safe-expressions make an expression disjunction not prioritise the topmost disjunct --int-bits the number of bits in an unsigned int --long-bits the number of bits in an unsigned long --linux-spacing spacing of + code follows the conventions of Linux --smpl-spacing spacing of + code follows the semantic patch -D indicate that a virtual rule should be considered to be matched --c++ make a small attempt to parse C++ files MISC OPTIONS --debugger option to set if launch spatch in ocamldebug --disable-once to print more messages --show-trace-profile show trace --save-tmp-files CONCURRENCY --index the processor to use for this run of spatch --max the number of processors available --mod-distrib use mod to distribute files among the processors PAD OPTIONS --use-cache use .ast_raw pre-parsed cached C file --cache-prefix directory of cached ASTs, sets -use-cache --cache-limit maximum number of cached ASTs, sets -use-cache TEST MODE AND TEST OPTIONS (WORKS WITH TESTS/ OR .OK FILES) The test options don't work with the --sp-file and so on. --test <file> launch spatch on tests/file.[c,cocci] --testall launch spatch on all files in tests/ having a .res --test-okfailed generates .{ok,failed,spatch_ok} files using .res files --test-regression-okfailed process the .{ok,failed,spatch_ok} files in current dir --compare-with-expected use also file.res --expected-score-file which score file to compare with in -testall --no-update-score-file do not update the score file when -testall succeeds --relax-include-path ACTION MODE The action options don't work with the --sp-file and so on. It's for the other (internal) uses of the spatch program. --tokens-c <file> --parse-c <file or dir> --parse-h <file or dir> --parse-ch <file or dir> --parse-i <file or dir> --parse <file or dir> --show-flow <file or file:function> --control-flow <file or file:function> --control-flow-to-file <file or file:function> --test-cfg-ifdef <file> --parse-unparse <file> --type-c <file> --compare-c <file1> <file2> --comment-annotater-c <file> --compare-c-hardcoded --test-attributes <file> --test-cpp <file> --extract-macros <file or dir> --extract-macros-select <file or dir> --xxx <file1> <> --parse-cocci <file> --compare-c <file1> <file2>
FILES
/usr/share/coccinelle/standard.iso This file contains the default set of isomorphisms. /usr/share/coccinelle/standard.h This file contains the default set of macro hints.
ENVIRONMENT
COCCINELLE_HOME The path to the Coccinelle share directory. Default is /usr/share/coccinelle
REFERENCES
Y. Padioleau, J.L. Lawall, R.R Hansen, G. Muller "Documenting and Automating Collateral Evolutions in Linux Device Driver" EuroSys 2008, Glasgow, Scotland (April 2008) pp. 247-260.
AUTHOR
spatch was written by Julia Lawall <julia@diku.dk>, Yoann Padioleau <yoann.padioleau@gmail.com>, Rene Rydhof Hansen <rrhansen@diku.dk> and Henrik Stuart <henrik@hstuart.dk>. This manual page was written by Yoann Padioleau <yoann.padioleau@gmail.com> and Julia Lawall <julia@diku.dk>.
REPORTING BUGS
Send a mail to <cocci@diku.dk>
COPYRIGHT
Copyright 2010, 2011, University of Copenhagen DIKU and INRIA. Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen. spatch 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, according to version 2 of the License.
SEE ALSO
patch(1), diff(1) aug 02, 2012 SPATCH(1)