76:
204:
It can also be used to find defective programming patterns in code (i.e., pieces of code that are erroneous with high probability such as possible NULL pointer dereference) without transforming them. Therefore
548:
543:
380:
190:
231:
93:
55:
29:
242:
117:
538:
171:
424:
210:
105:
215:
163:
174:
159:
352:
253:
The source code to be matched or replaced is specified using a "semantic patch" syntax based on the
100:
386:
513:
359:
323:
518:
376:
425:"Semantic Patches, Documenting and Automating Collateral Evolutions in Linux Device Drivers"
368:
151:
112:
197:, adding a function argument whose value is somehow context-dependent, and reorganizing a
75:
361:
Proceedings of the 9th
International Conference on Aspect-Oriented Software Development
198:
532:
420:
390:
348:
266:
254:
186:
128:
234:(France), the Danish Research Council for Technology and Production Sciences, and
167:
241:
The source code of
Coccinelle is licensed under the terms of version 2 of the
194:
372:
504:
64:
405:
324:"Coccinelle: A Program Matching and Transformation Tool for Systems Code"
481:
456:
353:"Tracking code patterns over multiple software versions with Herodotos"
508:
213:
tools. Examples of such use are provided by the applications of the
477:
452:
235:
227:
89:
478:"Evolutionary development of a semantic patch using Coccinelle"
523:
185:
Coccinelle was initially used to aid the evolution of the
230:. Funding for the development has been provided by the
123:
111:
99:
85:
54:
28:
219:tool, which keeps track of warnings generated by
292:...> spin_unlock_irqrestore(lock, flags);
8:
19:
189:, providing support for changes to library
16:Open-source utility for transforming C code
74:
18:
519:Articles describing the use of Coccinelle
285:spin_lock_irqsave(lock, flags); <...
281:expression lock, flags; expression urb;
315:
226:Support for Coccinelle is provided by
7:
524:Coccinellery: Semantic Patch Gallery
453:"Semantic patching with Coccinelle"
191:application programming interfaces
14:
304:+ usb_submit_urb(urb, GFP_KERNEL)
290:+ usb_submit_urb(urb, GFP_ATOMIC)
35:1.1.0 / February 25, 2021
232:Agence Nationale de la Recherche
514:Official latest stable download
432:coccinelle.gitlabpages.inria.fr
328:coccinelle.gitlabpages.inria.fr
549:Software using the GPL license
1:
544:Static program analysis tools
451:Valerie Henson (2009-01-20).
476:Wolfram Sang (2010-03-30).
209:s role is close to that of
170:of programs written in the
565:
406:"Nicolas Palix: Herodotos"
269:with C-like declarations.
243:GNU General Public License
193:(APIs) such as renaming a
423:; Muller, Gilles (2007).
367:. ACM. pp. 169–180.
351:; Muller, Gilles (2010).
162:utility for matching and
50:
24:
276:
373:10.1145/1739230.1739250
259:Semantic Patch Language
249:Semantic Patch Language
106:Static program analysis
505:Source code repository
265:) pattern resembles a
301:- usb_submit_urb(urb)
287:- usb_submit_urb(urb)
37:; 3 years ago
175:programming language
21:
419:Padioleau, Yoann;
482:Linux Weekly News
457:Linux Weekly News
145:
144:
556:
539:Code refactoring
492:
491:
489:
488:
473:
467:
466:
464:
463:
448:
442:
441:
439:
438:
429:
416:
410:
409:
401:
395:
394:
366:
357:
347:Palix, Nicolas;
344:
338:
337:
335:
334:
320:
305:
302:
299:
296:expression urb;
295:
291:
288:
284:
280:
141:
138:
136:
134:
132:
130:
78:
73:
70:
68:
66:
45:
43:
38:
22:
564:
563:
559:
558:
557:
555:
554:
553:
529:
528:
501:
496:
495:
486:
484:
475:
474:
470:
461:
459:
450:
449:
445:
436:
434:
427:
418:
417:
413:
404:Nicolas Palix.
403:
402:
398:
383:
364:
355:
346:
345:
341:
332:
330:
322:
321:
317:
312:
307:
306:
303:
300:
297:
293:
289:
286:
282:
278:
275:
251:
211:static analysis
183:
127:
81:
63:
46:
41:
39:
36:
17:
12:
11:
5:
562:
560:
552:
551:
546:
541:
531:
530:
527:
526:
521:
516:
511:
500:
499:External links
497:
494:
493:
468:
443:
411:
396:
381:
339:
314:
313:
311:
308:
277:
274:
271:
250:
247:
199:data structure
182:
179:
143:
142:
125:
121:
120:
115:
109:
108:
103:
97:
96:
87:
83:
82:
80:
79:
60:
58:
52:
51:
48:
47:
34:
32:
30:Stable release
26:
25:
15:
13:
10:
9:
6:
4:
3:
2:
561:
550:
547:
545:
542:
540:
537:
536:
534:
525:
522:
520:
517:
515:
512:
510:
506:
503:
502:
498:
483:
479:
472:
469:
458:
454:
447:
444:
433:
426:
422:
421:Lawall, Julia
415:
412:
407:
400:
397:
392:
388:
384:
382:9781605589589
378:
374:
370:
363:
362:
354:
350:
349:Lawall, Julia
343:
340:
329:
325:
319:
316:
309:
272:
270:
268:
264:
260:
256:
248:
246:
244:
239:
237:
233:
229:
224:
222:
218:
217:
212:
208:
202:
200:
196:
192:
188:
180:
178:
176:
173:
169:
165:
161:
157:
153:
149:
140:
126:
122:
119:
116:
114:
110:
107:
104:
102:
98:
95:
91:
88:
84:
77:
72:
62:
61:
59:
57:
53:
49:
33:
31:
27:
23:
485:. Retrieved
471:
460:. Retrieved
446:
435:. Retrieved
431:
414:
399:
360:
342:
331:. Retrieved
327:
318:
267:unified diff
262:
258:
257:syntax. The
252:
240:
225:
220:
214:
206:
203:
187:Linux kernel
184:
164:transforming
155:
147:
146:
131:.gitlabpages
207:coccinelle'
168:source code
160:open-source
71:/coccinelle
69:/coccinelle
533:Categories
487:2011-04-25
462:2011-04-25
437:2020-08-29
333:2021-03-09
310:References
221:coccinelle
148:Coccinelle
129:coccinelle
86:Written in
56:Repository
42:2021-02-25
20:Coccinelle
216:herodotos
195:function
158:) is an
156:ladybugs
137:/website
391:1082611
273:Example
245:(GPL).
181:Utility
152:Italian
124:Website
113:License
40: (
509:GitHub
389:
379:
133:.inria
94:Python
65:github
428:(PDF)
387:S2CID
365:(PDF)
356:(PDF)
255:patch
236:INRIA
228:IRILL
118:GPLv2
90:OCaml
377:ISBN
263:SmPL
166:the
154:for
101:Type
92:and
67:.com
507:on
369:doi
135:.fr
535::
480:.
455:.
430:.
385:.
375:.
358:.
326:.
298:@@
294:@@
283:@@
279:@@
238:.
223:.
201:.
177:.
490:.
465:.
440:.
408:.
393:.
371::
336:.
261:(
172:C
150:(
139:/
44:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.