Coccinelle ideas page

Coccinelle is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle has been extensively used on Linux code, but has been applied to some other projects as well.

Scilab has kindly agreed to host the Coccinelle projects for Google Summer of Code. For information on how to apply for these projects, please see the Scilab Google Summer of Code page.

Project 1:

Currently Coccinelle only treats C code. Nevertheless, many open source software projects are written using C++. The goal of this project is to allow Coccinelle to treat C++, to be able to apply Coccinelle bug finding and collateral evolution rules to C++ software.

Task: A parser for C++ has already been developed. The task is to connect this parser to the AST used by Coccinelle, extending this AST if needed. An further step in the project would be to extend the semantic patch language to treat C++ constructs as well. But the project will be a success even without the latter extension.

Success criteria: The project will be a success if it is possible to run a set of standard Coccinelle rules on a variety of C++ software.

Prerequisites: Coccinelle is implemented using Ocaml, and thus substantial experience in programming using Ocaml or another function language is essential. A good knowledge of C++ is also required.

Project 2:

Coccinelle is targeted to the case where a developer of a software project writes rules based on his knowledge of the API functions, coding conventions of his software project. Nevertheless, in order to help developers get started with Coccinelle, it would be useful to have a collection of well-tested rules that are likely to be useful on many software projects and a framework for applying them. An initial prototype, coccicheck, has been developed.

Task: Experiment with the existing version of coccicheck on a variety of open source software projects and identify aspects of coccicheck's functionality and the current rule set that could be improved. Implement these improvements, and repeat the process.

Success criteria: The project will be a success if the improved version of coccicheck is able to find significant bugs in a range of open source software, with few false positives.

Prerequisites: A large part of the project involves studying the reports generated by coccicheck and validating them in the corresponding software. Thus a good knowledge of C code, and experience with debugging C code is required for the project.

Application template:

Name, Email, Web page, University, Year at University, Relevant CS courses taken and grades, Location during the project period.

What is your experience in doing independent projects?

Project 1 only: Provide a small program that you have written using Ocaml or another functional language. Explain what your program does and include the source code.

Project 1 only: Provide a small program that you have written using C++. Explain what your program does and include the source code.

Project 2 only: Describe your experience in debugging C code. This may take the form of pointers to patches you have submitted to an open source project written in C or C++.

During the project period, you are expected to treat the project as your full time job. Please list any other responsibilities that you have during that time. This includes other work, studies, and major family events.