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 |