.vs
Assets
Library
APIUpdater
Artifacts
Bee
BuildPlayerData
PackageCache
com.unity.collab-proxy@2.5.2
com.unity.editorcoroutines@1.0.0
com.unity.ext.nunit@1.0.6
com.unity.feature.development@1.0.1
com.unity.ide.rider@3.0.31
com.unity.ide.visualstudio@2.0.22
com.unity.ide.vscode@1.2.5
com.unity.modules.ai@1.0.0
com.unity.modules.androidjni@1.0.0
com.unity.modules.animation@1.0.0
com.unity.modules.assetbundle@1.0.0
com.unity.modules.audio@1.0.0
com.unity.modules.cloth@1.0.0
com.unity.modules.director@1.0.0
com.unity.modules.imageconversion@1.0.0
com.unity.modules.imgui@1.0.0
com.unity.modules.jsonserialize@1.0.0
com.unity.modules.particlesystem@1.0.0
com.unity.modules.physics2d@1.0.0
com.unity.modules.physics@1.0.0
com.unity.modules.screencapture@1.0.0
com.unity.modules.subsystems@1.0.0
com.unity.modules.terrain@1.0.0
com.unity.modules.terrainphysics@1.0.0
com.unity.modules.tilemap@1.0.0
com.unity.modules.ui@1.0.0
com.unity.modules.uielements@1.0.0
com.unity.modules.umbra@1.0.0
com.unity.modules.unityanalytics@1.0.0
com.unity.modules.unitywebrequest@1.0.0
com.unity.modules.unitywebrequestassetbundle@1.0.0
com.unity.modules.unitywebrequestaudio@1.0.0
com.unity.modules.unitywebrequesttexture@1.0.0
com.unity.modules.unitywebrequestwww@1.0.0
com.unity.modules.vehicles@1.0.0
com.unity.modules.video@1.0.0
com.unity.modules.vr@1.0.0
com.unity.modules.wind@1.0.0
com.unity.modules.xr@1.0.0
com.unity.performance.profile-analyzer@1.2.2
com.unity.settings-manager@2.0.1
com.unity.test-framework@1.1.33
com.unity.testtools.codecoverage@1.2.6
Documentation~
Editor
Analytics
CommandLineParser
Compatibility
CoverageFormats
CoverageStats
CoverageWindow
CodeCoverageWindow.cs
CodeCoverageWindow.cs.meta
FolderDropDownMenu.cs
FolderDropDownMenu.cs.meta
FolderType.cs
FolderType.cs.meta
IncludedAssembliesPopupWindow.cs
IncludedAssembliesPopupWindow.cs.meta
IncludedAssembliesTreeView.cs
IncludedAssembliesTreeView.cs.meta
PathFilterType.cs
PathFilterType.cs.meta
PathToAddDropDownMenu.cs
PathToAddDropDownMenu.cs.meta
PathToAddHandler.cs
PathToAddHandler.cs.meta
Events
Filtering
Icons
Logging
Replacing
ReportGenerator
Utils
Analytics.meta
AssemblyInfo.cs
AssemblyInfo.cs.meta
CodeCoverage.Editor.asmdef
CodeCoverage.Editor.asmdef.meta
CodeCoverage.cs
CodeCoverage.cs.meta
CommandLineManager.cs
CommandLineManager.cs.meta
CommandLineParser.meta
Compatibility.meta
CoverageFormats.meta
CoveragePreferences.cs
CoveragePreferences.cs.meta
CoverageReportType.cs
CoverageReportType.cs.meta
CoverageReporterListener.cs
CoverageReporterListener.cs.meta
CoverageReporterManager.cs
CoverageReporterManager.cs.meta
CoverageResultWriterBase.cs
CoverageResultWriterBase.cs.meta
CoverageRunData.cs
CoverageRunData.cs.meta
CoverageSettings.cs
CoverageSettings.cs.meta
CoverageStats.meta
CoverageWindow.meta
Events.meta
Filtering.meta
ICoverageReporter.cs
ICoverageReporter.cs.meta
ICoverageReporterFilter.cs
ICoverageReporterFilter.cs.meta
Icons.meta
Logging.meta
Replacing.meta
ReportGenerator.meta
Utils.meta
Samples~
lib
.signature
CHANGELOG.md
CHANGELOG.md.meta
Editor.meta
LICENSE.md
LICENSE.md.meta
README.md
README.md.meta
Third Party Notices.md
Third Party Notices.md.meta
lib.meta
package.json
package.json.meta
com.unity.textmeshpro@3.0.6
com.unity.timeline@1.7.6
com.unity.ugui@1.0.0
com.unity.visualscripting@1.9.4
PackageManager
PlayModeViewStates
PlayerDataCache
ScriptAssemblies
Search
ShaderCache
SplashScreenCache
StateCache
UIElements
AnnotationManager
ArtifactDB
ArtifactDB-lock
BuildPlayer.prefs
BuildSettings.asset
EditorOnlyScriptingSettings.json
EditorOnlyVirtualTextureState.json
EditorSnapSettings.asset
EditorUserBuildSettings.asset
InspectorExpandedItems.asset
LastBuild.buildreport
LastSceneManagerSetup.txt
LibraryFormatVersion.txt
MonoManager.asset
SceneVisibilityState.asset
ScriptMapper
ShaderCache.db
SourceAssetDB
SourceAssetDB-lock
SpriteAtlasDatabase.asset
Style.catalog
expandedItems
ilpp.pid
Logs
Packages
ProjectSettings
UserSettings
obj
.vsconfig
Assembly-CSharp.Player.csproj
Assembly-CSharp.csproj
TM1.sln
Unity.CollabProxy.Editor.csproj
Unity.EditorCoroutines.Editor.csproj
Unity.Performance.Profile-Analyzer.Editor.csproj
Unity.PlasticSCM.Editor.csproj
Unity.Rider.Editor.csproj
Unity.Settings.Editor.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj
Unity.TestTools.CodeCoverage.Editor.csproj
Unity.TextMeshPro.Editor.csproj
Unity.TextMeshPro.Player.csproj
Unity.TextMeshPro.csproj
Unity.Timeline.Editor.csproj
Unity.Timeline.Player.csproj
Unity.Timeline.csproj
Unity.VSCode.Editor.csproj
Unity.VisualScripting.Core.Editor.csproj
Unity.VisualScripting.Core.Player.csproj
Unity.VisualScripting.Core.csproj
Unity.VisualScripting.Flow.Editor.csproj
Unity.VisualScripting.Flow.Player.csproj
Unity.VisualScripting.Flow.csproj
Unity.VisualScripting.SettingsProvider.Editor.csproj
Unity.VisualScripting.Shared.Editor.csproj
Unity.VisualScripting.State.Editor.csproj
Unity.VisualScripting.State.Player.csproj
Unity.VisualScripting.State.csproj
Unity.VisualStudio.Editor.csproj
UnityEditor.TestRunner.csproj
UnityEditor.UI.csproj
UnityEngine.TestRunner.Player.csproj
UnityEngine.TestRunner.csproj
UnityEngine.UI.Player.csproj
UnityEngine.UI.csproj
184 lines
6.4 KiB
C#
184 lines
6.4 KiB
C#
using UnityEditor.IMGUI.Controls;
|
|
using UnityEditor.Compilation;
|
|
using System.Text.RegularExpressions;
|
|
using System.Text;
|
|
using System.Linq;
|
|
using System;
|
|
using UnityEngine;
|
|
using UnityEditor.TestTools.CodeCoverage.Analytics;
|
|
|
|
namespace UnityEditor.TestTools.CodeCoverage
|
|
{
|
|
class IncludedAssembliesTreeView : TreeView
|
|
{
|
|
string m_AssembliesToInclude;
|
|
readonly CodeCoverageWindow m_Parent;
|
|
const float kCheckBoxWidth = 42f;
|
|
|
|
public float Width { get; set; } = 100f;
|
|
|
|
public IncludedAssembliesTreeView(CodeCoverageWindow parent, string assembliesToInclude)
|
|
: base(new TreeViewState())
|
|
{
|
|
m_AssembliesToInclude = assembliesToInclude;
|
|
m_Parent = parent;
|
|
showAlternatingRowBackgrounds = true;
|
|
showBorder = true;
|
|
Reload();
|
|
}
|
|
|
|
protected override bool CanMultiSelect(TreeViewItem item)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
protected override TreeViewItem BuildRoot()
|
|
{
|
|
string[] includeAssemblyFilters = m_AssembliesToInclude.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
Regex[] includeAssemblies = includeAssemblyFilters
|
|
.Select(f => AssemblyFiltering.CreateFilterRegex(f))
|
|
.ToArray();
|
|
|
|
TreeViewItem root = new TreeViewItem(-1, -1);
|
|
|
|
bool developerMode = EditorPrefs.GetBool("DeveloperMode", false);
|
|
|
|
if (developerMode)
|
|
{
|
|
System.Reflection.Assembly[] assemblies = AssemblyFiltering.GetAllProjectAssembliesInternal();
|
|
int assembliesLength = assemblies.Length;
|
|
|
|
GUIContent textContent = new GUIContent();
|
|
for (int i = 0; i < assembliesLength; ++i)
|
|
{
|
|
System.Reflection.Assembly assembly = assemblies[i];
|
|
bool enabled = includeAssemblies.Any(f => f.IsMatch(assembly.GetName().Name.ToLowerInvariant()));
|
|
root.AddChild(new AssembliesTreeViewItem() { id = i + 1, displayName = assembly.GetName().Name, Enabled = enabled });
|
|
|
|
textContent.text = assembly.GetName().Name;
|
|
float itemWidth = TreeView.DefaultStyles.label.CalcSize(textContent).x + kCheckBoxWidth;
|
|
if (Width < itemWidth)
|
|
Width = itemWidth;
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Assembly[] assemblies = AssemblyFiltering.GetAllProjectAssemblies();
|
|
int assembliesLength = assemblies.Length;
|
|
|
|
GUIContent textContent = new GUIContent();
|
|
for (int i = 0; i < assembliesLength; ++i)
|
|
{
|
|
Assembly assembly = assemblies[i];
|
|
bool enabled = includeAssemblies.Any(f => f.IsMatch(assembly.name.ToLowerInvariant()));
|
|
root.AddChild(new AssembliesTreeViewItem() { id = i + 1, displayName = assembly.name, Enabled = enabled });
|
|
|
|
textContent.text = assembly.name;
|
|
float itemWidth = TreeView.DefaultStyles.label.CalcSize(textContent).x + kCheckBoxWidth;
|
|
if (Width < itemWidth)
|
|
Width = itemWidth;
|
|
}
|
|
}
|
|
|
|
return root;
|
|
}
|
|
|
|
protected override void RowGUI(RowGUIArgs args)
|
|
{
|
|
AssembliesTreeViewItem item = args.item as AssembliesTreeViewItem;
|
|
EditorGUI.BeginChangeCheck();
|
|
bool enabled = EditorGUI.ToggleLeft(args.rowRect, args.label, item.Enabled);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
item.Enabled = enabled;
|
|
ApplyChanges();
|
|
}
|
|
}
|
|
|
|
public void SelectAll()
|
|
{
|
|
ToggleAll(true);
|
|
}
|
|
|
|
public void DeselectAll()
|
|
{
|
|
ToggleAll(false);
|
|
}
|
|
|
|
public void SelectAssets()
|
|
{
|
|
m_AssembliesToInclude = AssemblyFiltering.GetUserOnlyAssembliesString();
|
|
SelectFromString(m_AssembliesToInclude);
|
|
}
|
|
|
|
public void SelectPackages()
|
|
{
|
|
m_AssembliesToInclude = AssemblyFiltering.GetPackagesOnlyAssembliesString();
|
|
SelectFromString(m_AssembliesToInclude);
|
|
}
|
|
|
|
private void SelectFromString(string assembliesToInclude)
|
|
{
|
|
string[] includeAssemblyFilters = assembliesToInclude.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
Regex[] includeAssemblies = includeAssemblyFilters
|
|
.Select(f => AssemblyFiltering.CreateFilterRegex(f))
|
|
.ToArray();
|
|
|
|
foreach (var child in rootItem.children)
|
|
{
|
|
AssembliesTreeViewItem childItem = child as AssembliesTreeViewItem;
|
|
|
|
bool enabled = includeAssemblies.Any(f => f.IsMatch(childItem.displayName.ToLowerInvariant()));
|
|
if (searchString == null)
|
|
childItem.Enabled = enabled;
|
|
else if (DoesItemMatchSearch(child, searchString))
|
|
childItem.Enabled = enabled;
|
|
}
|
|
|
|
ApplyChanges();
|
|
}
|
|
|
|
private void ToggleAll(bool enabled)
|
|
{
|
|
foreach (var child in rootItem.children)
|
|
{
|
|
AssembliesTreeViewItem childItem = child as AssembliesTreeViewItem;
|
|
if (searchString == null)
|
|
childItem.Enabled = enabled;
|
|
else if (DoesItemMatchSearch(child, searchString))
|
|
childItem.Enabled = enabled;
|
|
}
|
|
|
|
ApplyChanges();
|
|
}
|
|
|
|
void ApplyChanges()
|
|
{
|
|
CoverageAnalytics.instance.CurrentCoverageEvent.updateAssembliesDialog = true;
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
foreach(var child in rootItem.children)
|
|
{
|
|
AssembliesTreeViewItem childItem = child as AssembliesTreeViewItem;
|
|
if (childItem.Enabled)
|
|
{
|
|
if (sb.Length > 0)
|
|
sb.Append(",");
|
|
|
|
sb.Append(childItem.displayName);
|
|
}
|
|
}
|
|
|
|
m_Parent.AssembliesToInclude = sb.ToString();
|
|
m_Parent.Repaint();
|
|
}
|
|
}
|
|
|
|
class AssembliesTreeViewItem : TreeViewItem
|
|
{
|
|
public bool Enabled { get; set; }
|
|
}
|
|
} |