Finden Sie alle ungültigen Zeigerzugriffe, Divisionen durch Null, arithmetischen Überläufe und Feldgrenzenverletzungen. Entdecken Sie kritische Wettläufe, Spectre-Verwundbarkeiten und andere Arten von Fehlern. Definieren Sie eigene Daten-, Kontroll- oder Signalflußanalysen und lassen Sie diese vollautomatisch als Teil Ihres Build-Prozesses laufen.
Überprüfen Sie Ihren C- oder C++-Code schnell und automatisch auf die Einhaltung von Standards wie MISRA, ISO/IEC, SEI CERT und CWE. Stellen Sie bei Bedarf Ihre ganz eigenen Zusatzregeln auf. Überwachen Sie Code-Metriken wie Commentdichte und zyklomatische Komplexität und erzeugen Sie Analyseberichte zu Dokumentations- und Zertifizierungszwecken.
Erfüllen Sie die höchsten Sicherheitsstandards, indem Sie Ihre Anwendung mit dem einzigen Compiler übersetzen, der formal mathematisch verifiziert wurde. Alle Sicherheitseigenschaften, die Sie auf der Quellcode-Ebene nachgewiesen haben (z. B. mit Astrée), gelten damit garantiert auch für den erzeugten Binärcode.
Berechnen Sie automatisch und exakt den maximalen Stackverbrauch Ihrer Anwendung für jeden Programmpunkt. Finden Sie alle Stacküberläufe, oder weisen Sie formal deren Abwesenheit nach. Identifizieren Sie kritische Programmteile und Ausführungspfade, und sparen Sie Zeit bei der Optimierung.
Bestimmen Sie mit aiT die schlimmstmögliche Ausführungszeit von Tasks in Ihren Binärdateien, ganz ohne aufwendige Tests oder Messungen. Die Analyseergebnisse gelten für alle Eingaben, alle möglichen Ausführungsszenarien, alle Cache- und Pipeline-Zustände.
Profitieren Sie von statischen Analysen selbst bei Prozessoren, die nur schwer oder unmöglich zu modellieren sind, indem Sie TimeWeaver einsetzen, der statische Pfadanalysen mit Zeitmessungen aus dem Echtzeit-Tracing verbindet.
Überwachen Sie mit TimingProfiler das Timing-Verhalten bereits ganz früh im Entwicklungsprozeß, wenn Sie sich noch für kein bestimmtes Prozessorderivat entschieden haben und Messungen an der Hardware schlicht unmöglich sind.