Overview

  1. Core Cppcheck
    1. Add 1 new checker (C++)
    2. Improved value flow (C++)
    3. Check for unused functions when -j is used (C++)
  2. Configurations
    1. Add a configuration (XML)
    2. Auto generate configuration (C++ / scripting)
    3. GUI for editing configurations (C++,Qt)
  3. Distributed computing
    1. Distributed computing (C++)
  4. 1. Core Cppcheck

    Project 1.1
    Name: Add 1 new checker
    Skills required: C++
    Description: There are several tickets in our issue tracker that has ideas for new checkers. The subtasks will be: implement a new checker, write test cases, test it against various projects.

    Project 1.2
    Name: Improved value flow
    Skills required: C++
    Description: The value flow analysis is used by various checkers - therefore improving this will mean that many checkers get better. It is possible to improve the value flow analysis, for example after conditions, inside loops, etc.

    Project 1.3
    Name: Check for unused functions when -j is used
    Skills required: C++, threads
    Description: Currently the check for unused functions only works when the analysis is single-threaded. When multithreaded analysis is done the check is disabled. The function usage must be stored in a thread safe way. The problem is that you don't have access to mutexes inside the check so instead of store to the same container from different threads it might be a good idea to store the function usage in different containers. And when all threads are done the results can be "merged".

    2. Configurations

    Project 2.1
    Name: Add a configuration
    Skills required: C/C++ (not much), XML
    Description: More configuration files are needed for various libraries. Subtasks: choose a popular library. Analyse the library functions and read API documentation. Write proper configuration file for Cppcheck.

    Project 2.2
    Name: Autogenerated configurations
    Skills required: C++ / scripting
    Description: Auto generate configuration from headers. To parse the headers, you can for instance do this yourself (python script/c++/..) or you can modify cppcheck and use the symboldatabase.

    Project 2.3
    Name: GUI for editing configurations
    Skills required: C++, Qt
    Description: A graphical user interface for editing configurations would be nice. This should be added in the cppcheck-gui program.

    3. Distributed computing

    Project 3.1
    Name: Distributed computing
    Skills required: Network, script, C++
    Description: Make it possible to distribute analysis. A client and server needs to be written. The client will execute cppcheck to perform analysis.