Assuring FORTE Code Quality

Reducing the number of bugs and keep a high code quality is a constant struggle. For FORTE we apply several means and tools which we summarize here as we think they can be helpful for users planing to extend FORTE.

Static Code Analysis

Static code analyzers as the name implies perform an off-line analysis of your code and try to identify potential issues. For FORTE we are currently using the following two open source static code analyzers:

Dynamic Analysis

Dynamic analysis tools help to find issues during the runtime. Typical issues are memory issues like memory leaks, out of bound access, stack over/underflows, or the use after memory is freed.

Unit Tests

We applied the unit test framework provided by the Boost-library called Boost Test. You can find the current set of available unit test in the directory test. New unit tests are always more then welcome.

Install Boost Test

To use execute unit tests at least boost 1.59 is needed. Download it and unzip it.

under Linux

wget -O boost_1_63_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz/download tar -xzvf boost_1_63_0.tar.gz cd boost_1_63_0/ ./bootstrap.sh gcc sudo ./b2 install --prefix=installation/path toolset=gcc

under Windows

For detailed instructions on installation under Windows have a look at this or this Blog. Otherwise follow this summary for cygwin:
  1. open a cygwin command line and go to your unziped folder
  2. Start bootstrap.bat and specify your toolset. Supported toolsets are: borland, como, gcc, gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10, vc11. Use the following command for cygwin
    ./bootstrap.sh gcc
  3. define an installation directory and specify a toolset. Toolsets here are a little bit different from the ones we used before. The following command creates two folders, include and lib. Both folders should contain files afterwards, which takes a lot of time.
    ./b2 install --prefix=c:/installation/path toolset=gcc

Set CMake of the 4diac-rte

Set the following configuration in CMake:
FORTE_TESTS=ON FORTE_TESTS_INC_DIRS=path to generated include files have to be set under windows FORTE_TESTS_LINK_DIRS=path to generated libraries have to be set under windows

The make target "all" generates a fortetest executable which executes all Tests. In case you want code coverage results also check FORTE_TEST_CODE_COVERAGE_ANALYSIS and create a make target in eclipse called TestCoverage the make target TestCoverage generates a folder with html files containing the coverage results. In case an error occures, uncomment

line 133: #ADD_DEFINITIONS (-fsanitize=address) line 166: remove -fsanitize=address

Function Block Tests

Based on Boost Test we developed a helper class which allows you to write unit test for Function Blocks in C++. For examples how to use it have a look on the test cases in the test/stdfblib directory. Write positive and negative test cases for your unit tests.

Where to go from here?

Go back to Development index:

Development Index

If you want to go back to the Start Here page, we leave you here a fast access

Start Here page

Or Go to top