diff options
| -rw-r--r-- | .cocciconfig | 3 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Documentation/coccinelle.txt | 70 |
3 files changed, 74 insertions, 0 deletions
diff --git a/.cocciconfig b/.cocciconfig new file mode 100644 index 000000000000..43967c6b2015 --- /dev/null +++ b/.cocciconfig | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | [spatch] | ||
| 2 | options = --timeout 200 | ||
| 3 | options = --use-gitgrep | ||
diff --git a/.gitignore b/.gitignore index 0c320bf02586..038ae7a397cd 100644 --- a/.gitignore +++ b/.gitignore | |||
| @@ -66,6 +66,7 @@ Module.symvers | |||
| 66 | # | 66 | # |
| 67 | !.gitignore | 67 | !.gitignore |
| 68 | !.mailmap | 68 | !.mailmap |
| 69 | !.cocciconfig | ||
| 69 | 70 | ||
| 70 | # | 71 | # |
| 71 | # Generated include files | 72 | # Generated include files |
diff --git a/Documentation/coccinelle.txt b/Documentation/coccinelle.txt index 66e822f8caee..b50ac7e126e8 100644 --- a/Documentation/coccinelle.txt +++ b/Documentation/coccinelle.txt | |||
| @@ -189,6 +189,60 @@ work. | |||
| 189 | 189 | ||
| 190 | DEBUG_FILE support is only supported when using coccinelle >= 1.2. | 190 | DEBUG_FILE support is only supported when using coccinelle >= 1.2. |
| 191 | 191 | ||
| 192 | .cocciconfig support | ||
| 193 | ~~~~~~~~~~~~~~~~~~~~~~ | ||
| 194 | |||
| 195 | Coccinelle supports reading .cocciconfig for default Coccinelle options that | ||
| 196 | should be used every time spatch is spawned, the order of precedence for | ||
| 197 | variables for .cocciconfig is as follows: | ||
| 198 | |||
| 199 | o Your current user's home directory is processed first | ||
| 200 | o Your directory from which spatch is called is processed next | ||
| 201 | o The directory provided with the --dir option is processed last, if used | ||
| 202 | |||
| 203 | Since coccicheck runs through make, it naturally runs from the kernel | ||
| 204 | proper dir, as such the second rule above would be implied for picking up a | ||
| 205 | .cocciconfig when using 'make coccicheck'. | ||
| 206 | |||
| 207 | 'make coccicheck' also supports using M= targets.If you do not supply | ||
| 208 | any M= target, it is assumed you want to target the entire kernel. | ||
| 209 | The kernel coccicheck script has: | ||
| 210 | |||
| 211 | if [ "$KBUILD_EXTMOD" = "" ] ; then | ||
| 212 | OPTIONS="--dir $srctree $COCCIINCLUDE" | ||
| 213 | else | ||
| 214 | OPTIONS="--dir $KBUILD_EXTMOD $COCCIINCLUDE" | ||
| 215 | fi | ||
| 216 | |||
| 217 | KBUILD_EXTMOD is set when an explicit target with M= is used. For both cases | ||
| 218 | the spatch --dir argument is used, as such third rule applies when whether M= | ||
| 219 | is used or not, and when M= is used the target directory can have its own | ||
| 220 | .cocciconfig file. When M= is not passed as an argument to coccicheck the | ||
| 221 | target directory is the same as the directory from where spatch was called. | ||
| 222 | |||
| 223 | If not using the kernel's coccicheck target, keep the above precedence | ||
| 224 | order logic of .cocciconfig reading. If using the kernel's coccicheck target, | ||
| 225 | override any of the kernel's .coccicheck's settings using SPFLAGS. | ||
| 226 | |||
| 227 | We help Coccinelle when used against Linux with a set of sensible defaults | ||
| 228 | options for Linux with our own Linux .cocciconfig. This hints to coccinelle | ||
| 229 | git can be used for 'git grep' queries over coccigrep. A timeout of 200 | ||
| 230 | seconds should suffice for now. | ||
| 231 | |||
| 232 | The options picked up by coccinelle when reading a .cocciconfig do not appear | ||
| 233 | as arguments to spatch processes running on your system, to confirm what | ||
| 234 | options will be used by Coccinelle run: | ||
| 235 | |||
| 236 | spatch --print-options-only | ||
| 237 | |||
| 238 | You can override with your own preferred index option by using SPFLAGS. Take | ||
| 239 | note that when there are conflicting options Coccinelle takes precedence for | ||
| 240 | the last options passed. Using .cocciconfig is possible to use idutils, however | ||
| 241 | given the order of precedence followed by Coccinelle, since the kernel now | ||
| 242 | carries its own .cocciconfig, you will need to use SPFLAGS to use idutils if | ||
| 243 | desired. See below section "Additional flags" for more details on how to use | ||
| 244 | idutils. | ||
| 245 | |||
| 192 | Additional flags | 246 | Additional flags |
| 193 | ~~~~~~~~~~~~~~~~~~ | 247 | ~~~~~~~~~~~~~~~~~~ |
| 194 | 248 | ||
| @@ -197,8 +251,24 @@ variable. This works as Coccinelle respects the last flags | |||
| 197 | given to it when options are in conflict. | 251 | given to it when options are in conflict. |
| 198 | 252 | ||
| 199 | make SPFLAGS=--use-glimpse coccicheck | 253 | make SPFLAGS=--use-glimpse coccicheck |
| 254 | |||
| 255 | Coccinelle supports idutils as well but requires coccinelle >= 1.0.6. | ||
| 256 | When no ID file is specified coccinelle assumes your ID database file | ||
| 257 | is in the file .id-utils.index on the top level of the kernel, coccinelle | ||
| 258 | carries a script scripts/idutils_index.sh which creates the database with | ||
| 259 | |||
| 260 | mkid -i C --output .id-utils.index | ||
| 261 | |||
| 262 | If you have another database filename you can also just symlink with this | ||
| 263 | name. | ||
| 264 | |||
| 200 | make SPFLAGS=--use-idutils coccicheck | 265 | make SPFLAGS=--use-idutils coccicheck |
| 201 | 266 | ||
| 267 | Alternatively you can specify the database filename explicitly, for | ||
| 268 | instance: | ||
| 269 | |||
| 270 | make SPFLAGS="--use-idutils /full-path/to/ID" coccicheck | ||
| 271 | |||
| 202 | See spatch --help to learn more about spatch options. | 272 | See spatch --help to learn more about spatch options. |
| 203 | 273 | ||
| 204 | Note that the '--use-glimpse' and '--use-idutils' options | 274 | Note that the '--use-glimpse' and '--use-idutils' options |
