Diese Verteilung von Scaife -API -Definitionsdateien umfasst YAML-, JSON- und HTML -formatierte Dateien. In den meisten Veröffentlichungen befindet sich in jedem Dateiformat für jedes der fünf Scaife -Module eine Datei.
In der Veröffentlichung von Scaife APIS im März 2021 haben wir nur die YAML -Dateien veröffentlicht. In dieser Version werden alle unsere Module für die Verwendung von OpenAPI -Version 3 -Format aktualisiert. In Zukunft werden wir auch unsere Skripte aktualisieren, die die automatisierte Codegenerierung an JSON und HTML durchführen, um mit OpenAPI Version 3 zu arbeiten.
Die YAML-Datei gibt die API-Definition der Quellcode-Analyse integrierte Framework-Umgebung (SCAIFE) [1, 2, 3, 5] an, in einem Format, mit dem Entwickler problemlos Code von (z. B. mit den Swagger-Editor- und Swagger-Codegen-Tools [4] CODE generieren können. Die YAML -Datei wurde von SEI -Entwicklern fast ausschließlich manuell erstellt. Die einzigen Dinge, die durch Swagger-Tools innerhalb der YAML-Datei automatisch generiert wurden, sind einige der Beispiele.
Die JSON-Dateien wurden automatisch generiert, indem Swagger-Codegen auf den Swagger.yaml-Dateien ausgeführt wurde, da einige Entwickler es vorziehen, die API in JSON anzuzeigen oder Tools für Codegenerierung zu haben, die mit JSON am besten funktionieren.
Die HTML -Dateien geben auch die Scaife -API -Definition an, in einem von Personen lesbaren Format, die es vorziehen, YAML -Dateien nicht zu lesen (oder keine Tools zu haben). Die HTML -Dateien können in jedem Standard -Webbrowser angezeigt werden. Die HTML -Dateien enthalten Hyperlinks, und der folgende referenzierte Whitepaper bietet Anleitung zum Verständnis der HTML -Dateien.
Scaife ist eine Architektur, die eine statische Analyse -Warnungsklassifizierung und -Priorisierung unterstützt. Es ist so konzipiert, dass eine Vielzahl statischer Analyse -Tools mit der von uns entwickelten API -Definition in das System integriert werden können. Nach den Scaife -API -Versionen 2.0.0 haben wir API -Aufrufe hinzugefügt, mit denen Scaife Aktualisierungen über Code -Commits und neue statische Analyseausgänge von CII -Servern (Continuous Integration) erhalten können. Wir gehen davon aus, dass die API für Organisationen, die statische Analyse -Tools, die Prüfung der AGGRETORS und andere statische Analyse -Warnwarnungs -Prüfungsrahmen von statischer Analyse -Warnwarnungs -Auditing -Rahmenbedingungen von Interesse haben, von Interesse ist. Diese Scaife -API -Definition kann von Entwicklern verwiesen werden, um ihnen zu helfen, Entwicklungsbemühungen abzuschätzen, die erforderlich sind, um das Tool ihrer Organisation zu ändern, um Scaife -API -Anrufe zu tätigen und zu reagieren. Diese API -Definition wird auch mit dem Ziel veröffentlicht, Feedback von Entwicklern und Organisationen zu generieren, die an der Implementierung der Scaife -API interessiert sind, um die API von Scaife zu verbessern, um von Entwicklern für eine Vielzahl statischer Analyse -Tools leichter verwendbar zu werden. Ein Prototypsystem, das es implementiert, wurde an Forschungsprojektkollaborateure verteilt.
Die in der Abbildung gezeigte Scaife -Architektur umfasst fünf Server. Das System ist modular und entwickelt, sodass jedes Modul durch verschiedene Tools/Software instanziiert werden kann, während das Gesamtsystem die gleiche Funktionalität beibehalten sollte. Das UI-Modul verfügt über ein GUI-Front-End, das die Anzeige von FFSA-Warnmeldungen (fehlerhafte statische Analysen) ermöglicht und lokale Projekte speichert. Die Scaife -Architektur soll eine Vielzahl von FFSA -Tools und Warnaggregator -Tools ermöglichen, um Klassifizierungs- und Priorisierungsfunktionen zu erhalten, indem sie als UI -Modul mit dem Rest des Scaife -Systems interagiert. Diese Tools müssen die UI -Modul -API -Aufrufe zu den anderen Servern instanziieren. Das DataHub-Modul speichert Daten (Tool, Alarm, Projekt, Testsuite-Meta-Daten, Justizier usw.) aus einem oder mehreren UI-Modulen und entscheidet einige Meta-Alerts. Das Statistikmodul erstellt, läuft und speichert Klassifikatoren und adaptive heuristische (aktive Lern-) Algorithmen und automatisierte Hyperparameteralgorithmen. Das Priorisierungsmodul speichert Priorisierungsformeln und benutzerdeplozierte Priorisierungsfelder. Das Registrierungsmodul wird zur Authentifizierung und Zugriffskontrolle verwendet. Es generiert Registrierungstoken und bietet Authentifizierung und grundlegende Autorisierung für andere Server.
Wählen Sie einen der fünf Module aus, um zu inspizieren: Die meisten Entwickler von FFSA -Tools und Warnaggregator -Tools sind am meisten an der API -Definition des UI -Moduls interessiert. Damit ihr Werkzeug mit dem Scaife -System interagieren kann, muss ihr Tool die API des UI -Moduls instanziieren. Einige Forscher/Entwickler konzentrierten sich jedoch auf die Verbesserung der Klassifizierung, des aktiven Lernens und der automatisierten Hyperparameteroptimierung, sondern möchten sich stattdessen auf die API des Statistikmoduls konzentrieren. Sie können neue Algorithmen entwickeln und sie modular in einen von uns entwickelten Prototyp einbeziehen (wenn sie unser Forschungskollaborator sind) oder einfach ihre eigenen Tools modifizieren, um die API des Statistikmoduls zu instanziieren, und dann mit einem Scaife -System interagieren, das von anderen Modulen entwickelt wurde (z. B. für ein UI -Modul, das wir für die modifizierte Verwendung von SCIFE -Modul verwenden können, um die Version der Skala zu verarbeiten, um moduliert zu arbeiten, um mit SCIAFE zu arbeiten. In ähnlicher Weise konzentrieren sich einige Forscher/Entwickler auf die Verbesserung der Leistung, Sicherheit, Belastbarkeit und Skalierbarkeit aggregierter und schließlich erwarteter Datenspeicherung. Diese Leute werden sich auf die API des Datahub -Moduls konzentrieren wollen. Wir erwarten, dass eine geringere Anzahl von Forschern/Entwicklern Registrierungs- oder Priorisierungsmodule implementiert. Ihre APIs werden jedoch weiterhin nützlich sein, da andere Server mit ihnen interagieren müssen, sei es in einem Client oder einer Serverrolle.
Wenn Sie können, empfehlen wir Ihnen, den Open-Source-Swagger-Editor [4] oder ein ähnliches API-Anzeige- und Bearbeitungswerkzeug zu verwenden. Öffnen Sie darin eine API -Definitionsdatei (.yaml oder .json). Der Swagger-Editor bietet eine benutzerfreundliche Möglichkeit, einfache Tests anzuzeigen, durchzuführen und die API-Definition zu ändern.
Andernfalls können Sie die HTML -API -Definitionsdatei in einem Webbrowser anzeigen. Auf diese Weise können auf die Modelle und Methoden zugegriffen werden, indem die Hyperlinks folgen, die jeder Ressource im Abschnitt Scaife API -Definition unten zugeordnet sind.
Jeder Abschnitt API -Definition wird basierend auf den Quell- und Zielmodulen der API -Aufrufe kategorisiert. Beispielsweise enthält der Abschnitt Rapid Models Registrierung und Anmeldemodul -API -Definition nur eine Kategorie von API -Aufrufen unter der Label Uitoregistration. Die Quelle (Anfrage) der API -Anrufe stammt aus dem UI -Modul, und die API -Anrufe werden an das Ziel weitergeleitet - das Registrierungsmodul. Datenmodelle sind im unteren Abschnitt der Datei definiert.
Hoffentlich werden Sie die API nicht nur inspizieren, Sie werden sie auch verwenden, um Ihr Tool oder Code in ein Scaife -System zu integrieren. Sie können automatisch Code aus der YAML- oder JSON -API -Definition eines der Scaife -Module mit Swagger CodeGen [4] oder ähnlichen Tools generieren. Dies hat nicht nur den Vorteil, dass die Codeentwicklung beschleunigt und automatisiert wird, sondern stellt auch sicher, dass der Code die Scaife -API instanziiert. Wenn Sie über ein Tool verfügen, für das Sie einen Client -Code generieren möchten (was bedeutet, möchten Sie Code, mit dem Sie einen in der API -Definition des Servers definierten Scaife -Server aufrufen möchten), generieren Tools wie Swagger CodeGen Code in einer Vielzahl von Sprachen. Sie können den generierten Client -Code an der richtigen Stelle in Ihren eigenen Code einbringen und Ihre eigenen Variablen als Parameter verwenden. In ähnlicher Weise können Sie automatisch Servercode für eines der Scaife -Module generieren, einschließlich der Controller -Funktionsstubs für jede der API -Aufrufe zu diesem Server, für den Sie dann den internen Code ausführen.
Spezielle Notizen für API -Rezensenten: