From b5cbe784f3727a83b59ece3e854e39edad5d0fc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?=
-
Project 1.2
- Name: Improved value flow
+ Name: Abstract interpretation of loops
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.
+ Description: You will write an C/C++ expression interpreter that uses the Cppcheck syntax
+ tree to interpret the expressions in loops. When there are unknown operands (variables with unknown value,
+ etc) the interpreter shall bailout. You will interpret the loop expressions until : the loop finish , or
+ there is a timeout , or the variables are unchanged. During the interpretation, the variable values will be
+ recorded and saved as ValueFlow values. You can read an overview of the Cppcheck syntax tree and ValueFlow
+ analysis in the cppcheck
+ design document.
@@ -79,10 +84,9 @@
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".
+ single-threaded. When multithreaded analysis is done the check is disabled. Currently the check saves function
+ usage information in a container. The same container is used for all files. This should be refactored. For each
+ file there should be a separate container for the function usage information.
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.
+ 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. All function names will be
+ extracted, and you will also determine what function arguments are passed by value.
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.
+ Description: A graphical user interface for editing configurations would be nice. This can
+ be developed as a standalone program or integrated in the cppcheck-gui program. However in the end the plan
+ is that it will be merged into the cppcheck-gui program.
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.
+ Skills required: Network, python / c++
+ Description: Make it possible to distribute analysis. A client and server needs to be
+ written. The client will execute cppcheck to perform analysis. The programming language used to write the
+ client and server is either python or c++ (your choice). The server shall be able to handle at least 100
+ clients. The client and server needs to be cross platform.