Wenn du einen Build-Server oder ein anderes System zur Automatisierung deiner Builds verwendest, kannst du den Verifizierungsscan als Teil dieses Prozesses einbinden, um die Ergebnisse automatisch aufzulisten, zum Beispiel mit Cron. Wir verwenden das System intern auf diese Weise mit einem Ubuntu-basierten Custom Build Server.
Aufrufen von verify über die Befehlszeilenschnittstelle
Das folgende Skript kann verwendet werden, um eine Prüfung des gesamten Projekts durchzuführen. Das Ergebnis wird in eine Textdatei geschrieben und kann dann weiterverarbeitet werden.
Dies ist der Linux-Aufruf, den wir verwenden, um diesen Code auszuführen. Du kannst ihn an deine Bedürfnisse anpassen. Eine vollständige Dokumentation darüber, wie du das machst, würde den Rahmen dieser Dokumentation und des Projekts sprengen:
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -quit -batchmode -nographics -projectPath /myProjectPath/ -executeMethod BuildServerFunctions.PerformVerify > /builds/verifyLog.txt
//
// Copyright (c) 2023 Off The Beaten Track UG
// Alle Rechte vorbehalten.
//
using Sparrow.Verification;
using OTBT.Framework.Utils;
using UnityEngine;
using System.IO;
public class BuildServerFunctions
{
// diese Funktion kann von der Kommandozeile aus aufgerufen werden
private static string PerformVerify()
{
string path = "./Builds/verifyReport.txt";
if (!Directory.Exists("./Builds"))
Directory.CreateDirectory("./Builds");
StreamWriter writer = new StreamWriter(path, true);
VerifyWindow verifyWindow = new VerifyWindow();
var dict = verifyWindow.PerformCheck(VerifyWindow.CheckType.All);
int numberOfProblems = dict.Count;
string output = $ "**Verify hat {numberOfProblems} Probleme im Projekt {Anwendung.Produktname}.**\n";
writer.WriteLine($ "Verify hat {AnzahlderProbleme} Probleme im Projekt {Anwendung.Produktname}.\n");
int areaProblems = 0;
string tempOutput = "";
dict.Sort((a, b) => a.category.CompareTo(b.category));
string lastCategory = "";
foreach (VerifyResult check in dict)
{
if (!check.category.Equals(lastCategory))
{
lastCategory = check.category;
tempOutput += "\n\n" + lastCategory;
}
areaProblems += 1;
tempOutput += "\n" + check.toString;
}
if(areaProblems > 0)
output += " :red_circle: "+": " + areaProblems + " problems\n";
writer.WriteLine((areaProblems > 0 ? " XX" : " OK") + " " + ": " + areaProblems + " problems" + tempOutput);
Dbg.Log(null, output);
writer.Close();
return output;
}
}
Integration in Build-Server
Du kannst deinen Verify Scan in Travis CI oder Circle CI integrieren, indem du den Kommandozeilenaufruf in das Build-Skript des CI-Systems einfügst. In der jeweiligen Konfigurationsdatei (z.B., .travis.yml
für Travis CI oder config.yml
für Circle CI), füge einen Schritt hinzu, der dein Verify-Skript ausführt. Stelle sicher, dass die erforderliche Umgebung mit Unity und allen Abhängigkeiten eingerichtet ist. So kannst du den Scan bei jedem Build automatisch ausführen und die Ergebnisse entsprechend auswerten.