ANA Analyzer ist ein Analysetool, mit dem die CPP -Speicherlecks (oder mehr?) Analyse verwendet werden können. Und überprüft Sammlungen. Einschließlich einiger Konzeptebibliotheken, die C ++ 20 verwendeten. Jetzt basiert es auf dem Clang Static Analyzer, ich möchte es zu einem statischen Analysator machen, mit dem Sprachen analysiert werden können, die ihre Codes für LLVM IR generierten. Und ich werde einige Funktionen implementieren, mit denen die Sprache analysiert werden kann (alle Algorithmen in einer statischen Analyse oder Programmanalyse)

Es war seit langer Zeit ein wichtiges Thema in der Informatik -Community, wie man schnell Lücken findet und verschiedene potenzielle Fehler in Programmen so weit wie möglich findet. Dieses Problem wurde auch von großen internationalen Softwareunternehmen hoch geschätzt. In der Industrie verwenden Menschen häufig unterschiedliche Erkennungsmethoden, um Fehler in der Software zu finden und die Qualität der Software zu verbessern. Anders als bei der dynamischen Testmethode können wir den Programmcode auch direkt analysieren, ohne die Software auszuführen und einige Fehler zu finden. Diese Art von Methode wird als statische Analyse bezeichnet. Es ist eine wichtige Forschungsrichtung im Bereich der Programmiersprache und der Zusammenstellung und des Software -Engineering. Ein relativ bekanntes Tool für früh entwickelte statische Analyse ist FINT, das hauptsächlich auf Sicherheitsprobleme in der C-Sprache prüft. In den letzten Jahren hat die statische Analysetechnologie allmählich die Aufmerksamkeit von Wissenschaftlern in den Bereichen Betriebssysteme und Informationssicherheit auf sich gezogen. Einige von der Rostsprache vorgeschlagene Kernsemantik können auch als Verweis auf andere Sprachen. Dieses Papier konzentriert sich auf die Sicherheitsverbesserung von C ++ und verwendet statische Analysetechnologie, um die Speicherprobleme von C ++ zu analysieren. Der Schaden, der durch die Verwundbarkeit usw. für Zeiger und andere Probleme verursacht wird, werden die entsprechenden Lösungen angegeben, und für Entwickler wird eine ähnliche Ausleihe -Check -Bibliothek vorgesehen. Auf der Grundlage des Clang Static Analyzer werden mehrere Überprüfungen implementiert, die Vorteile gegenüber vorhandenen statischen Analyse -Tools haben.
Laden Sie meine Veröffentlichung herunter, aber denken Sie daran, LLVM@15 oder höher zu verwenden. und führen Sie den Befehl aus.
/path/to/install/clang++ -cc1 -load ANA.dylib
-analyze -analyzer-checker=ANA
foobar.cppSie können Ihre eigenen Abhängigkeiten herstellen ,
Verwenden Sie Conan oder VCPKG install {fmt} und Google oder verwenden Sie das Git -Submodule
Installieren Sie LLVM@15 oder höher
Zuerst müssen Sie alle Abhängigkeiten installieren. Und dann können Sie bauen.
mkdir build
cd build
cmake .. -G Ninja # optional obviously
ninjaWir bekommen die folgenden Ziele.
ClangPlugins
├── assign-or-float-compIn-branch-cond-checker
├── CMakeLists.txt
├── function-printer
├── sample-checker
└── simple-allocation-operators-checker
Bauen Sie den Analysator auf. Sie wollen.
Einfach einfach sehen Sie das Beispiel im Testverzeichnis. ./runalltest.sh
Installieren Sie die folgenden Abhängigkeiten. FD - Sie müssen FD (https://github.com/sharkdp/fd) zuerst installieren
und laufen Sie den Benchmark in den Utils.