.. include:: ./../../macros.txt .. include:: ./../../units.txt .. _SOFTWARE_TOOLS: Software Tools ============== General ------- At every commit of the development the repository strictly defines the tools and their versions that **MUST** be used when working on the project. All developers **MUST** use exactly these tools and versions. The continuous integration test runners **MUST** use exactly these tools and versions. The tools and versions that are used **MUST** be defined in the documentation. Third Party Tools ----------------- Supporting tools for software analysis **SHOULD** be ISO 9001 qualified. The following supporting tool classes are required to be used: - version control system - compiler - text editor - build automation system - unit testing framework - static program analysis tools - documentation tools - test runner The following tools are shown in :numref:`mapping-of-third-party-tools`. .. table:: Third Party Tools :name: mapping-of-third-party-tools :widths: grid +-----------------+-------------------------+-------------+----------------------------------------+ | Tool | Class | Criticality | Criticality comment | +=================+=========================+=============+========================================+ | |git| | version control system | T3 | | +-----------------+-------------------------+-------------+----------------------------------------+ | TI ARM CGT | compiler | T3 | used to build code for the target | +-----------------+-------------------------+-------------+----------------------------------------+ | TI ARM CGT | linker | T3 | used to link code for the target | +-----------------+-------------------------+-------------+----------------------------------------+ | GCC | compiler | T2 | used to build and link code | | | | | for unit tests | +-----------------+-------------------------+-------------+----------------------------------------+ | VS Code | text editor | T1 | | +-----------------+-------------------------+-------------+----------------------------------------+ | Waf | build automation system | T3 | controls build process; generates | | | | | version dependent code | +-----------------+-------------------------+-------------+----------------------------------------+ | Axivion Suite | static program | T2 | | | | analysis tools | | | +-----------------+-------------------------+-------------+----------------------------------------+ | sphinx | documentation tools | T1 | just a rendering tool for | | | | | the documentation text files | +-----------------+-------------------------+-------------+----------------------------------------+ | ceedling | unit testing framework | T2 | | +-----------------+-------------------------+-------------+----------------------------------------+ | *Custom HIL | test runner | T3 | | | implementation* | | | | +-----------------+-------------------------+-------------+----------------------------------------+ Repository Inherent Tools ------------------------- General ^^^^^^^ Tools that are specifically developed to support this project **MUST** be included in the repository. These tools **MUST** be checked by language appropriate checkers: - linters to reduce the presence of programmatically detectable error (if available) - source code formatters to simplify code reviews (if available) Unit tests **MUST** be implemented for these tools. .. _supporting_languages: Supporting Programming and Scripting Languages ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Programming and scripting languages that support the projects objective **MUST** be chosen from the following list in order to limit the number of external dependencies: - Python 3 - Ruby 2.7 - shell scripts (for ``cmd.exe`` or ``bash``)