Discover any divisions by zero, out-of-bounds array accesses, erroneous pointer manipulations, and arithmetic overflows. Find data races, inconsistent locking, Spectre vulnerabilities, and other types of errors. Set up custom analyses of the control flow, data flow, signal flow, and component dependencies. Easily let any or all analyses run automatically as part of your build process.
Check your C or C++ code against MISRA, CWE, SEI CERT, ISO/IEC, and AUTOSAR guidelines, or your in-house coding rules. Easily toggle or configure any rule as needed. Monitor code metrics such as comment density or cyclomatic complexity, and generate customizable reports for documentation and certification purposes.
Meet the highest levels of software assurance by compiling your application with the only C compiler that’s been formally verified to be free of miscompilation issues. All safety properties that you verify on your source code, e.g. using Astrée, are guaranteed to also hold for the generated executable.
Use aiT to compute tight and safe upper bounds for the worst-case execution time of tasks in your binary executable. No testing or measuring required — the static analysis guarantees that the computed bounds hold for every possible execution scenario, any combination of inputs, all cache and pipeline states.
Benefit from the efficiency and safety offered by static analyses even when working with processors that are too complex to model — by using TimeWeaver that combines static path analysis with timing measurements obtained from real-time instruction-level tracing.
Let TimingProfiler help you monitor timing behavior at the earliest stages of software development, when you haven’t even decided on a specific processor derivate, and measurements on physical hardware are plain impossible.