Test123/Assets/RL_DevPlus1/Editor/ProjectAnalyzer/RLAIContextExporter.cs
2026-06-15 12:56:29 -05:00

69 lines
2.5 KiB
C#

using System.Collections.Generic;
namespace RunlevelSystems.DevPlus1.EditorTools
{
public static class RLAIContextExporter
{
public static void EnrichProjectContext(RLProjectAnalysisData data)
{
data.suggestedFirstFiles.Clear();
data.risksOrUnknowns.Clear();
foreach (RLScriptInfo script in data.scripts)
{
string lower = (script.className + " " + script.possibleRole).ToLowerInvariant();
if (lower.Contains("manager") || lower.Contains("controller") || script.lifecycleMethods.Count > 0)
{
AddUnique(data.suggestedFirstFiles, script.scriptPath);
}
}
foreach (string file in data.gitReports.importantFiles)
{
AddUnique(data.suggestedFirstFiles, file);
}
if (data.scenes.Count == 0)
{
data.risksOrUnknowns.Add("No scenes were analyzed. Scene flow needs manual confirmation.");
}
if (data.gitReports.validationFoundErrors)
{
data.risksOrUnknowns.Add("Git validation reports customer code errors. Review reports/errors.md before feature work.");
}
int missingScripts = 0;
int missingReferences = 0;
foreach (RLSceneInfo scene in data.scenes)
{
missingScripts += scene.missingScriptCount;
missingReferences += scene.missingReferenceCount;
}
foreach (RLPrefabInfo prefab in data.prefabs)
{
missingScripts += prefab.missingScriptCount;
missingReferences += prefab.missingReferenceCount;
}
if (missingScripts > 0)
{
data.risksOrUnknowns.Add("Missing scripts were detected. Inspect RL_Unity_Missing_References.md.");
}
if (missingReferences > 0)
{
data.risksOrUnknowns.Add("Missing serialized object references were detected. Inspect RL_Unity_Missing_References.md.");
}
data.risksOrUnknowns.Add("Analysis is best-effort and may miss runtime-created objects, reflection, addressables, or dependency injection.");
}
private static void AddUnique(List<string> values, string value)
{
if (!string.IsNullOrEmpty(value) && !values.Contains(value))
{
values.Add(value);
}
}
}
}