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 into build servers
You can integrate your Verify scan into Travis CI or Circle CI by including the command line call in the CI system’s build script. In the respective configuration file (e.g., .travis.yml
for Travis CI or config.yml
for Circle CI), add a step that executes your Verify script. Ensure that the required environment with Unity and all dependencies is set up. This allows you to automatically run the scan with each build and evaluate the results accordingly.