public void Audit(ProjectReport projectReport, IProgressBar progressBar = null) { var userAssemblies = GetPlayerAssemblies(); if (userAssemblies.Count > 0) { m_AssemblyResolver = new DefaultAssemblyResolver(); #if UNITY_2019_1_OR_NEWER List <string> assemblyPaths = new List <string>(); assemblyPaths.AddRange(CompilationPipeline.GetPrecompiledAssemblyPaths(CompilationPipeline.PrecompiledAssemblySources .UserAssembly)); assemblyPaths.AddRange(CompilationPipeline.GetPrecompiledAssemblyPaths(CompilationPipeline.PrecompiledAssemblySources .UnityEngine)); foreach (var dir in assemblyPaths.Select(path => Path.GetDirectoryName(path)).Distinct()) { m_AssemblyResolver.AddSearchDirectory(dir); } #else m_AssemblyResolver.AddSearchDirectory(Path.Combine(EditorApplication.applicationContentsPath, "Managed", "UnityEngine")); #endif m_AssemblyResolver.AddSearchDirectory(Path.Combine(EditorApplication.applicationContentsPath, "UnityExtensions", "Unity", "GUISystem")); foreach (var dir in userAssemblies.Select(path => Path.GetDirectoryName(path)).Distinct()) { m_AssemblyResolver.AddSearchDirectory(dir); } var callCrawler = new CallCrawler(); if (progressBar != null) { progressBar.Initialize("Analyzing Scripts", "Analyzing project scripts", m_PlayerAssemblies.Length); } // Analyse all Player assemblies, including Package assemblies. foreach (var assemblyPath in userAssemblies) { if (progressBar != null) { progressBar.AdvanceProgressBar(string.Format("Analyzing {0} scripts", Path.GetFileName(assemblyPath))); } if (!File.Exists(assemblyPath)) { Debug.LogError(assemblyPath + " not found."); continue; } AnalyzeAssembly(assemblyPath, projectReport, callCrawler); } if (progressBar != null) { progressBar.ClearProgressBar(); } callCrawler.BuildCallHierarchies(projectReport, progressBar); } }
public void Audit(ProjectReport projectReport, IProgressBar progressBar = null) { if (!AssemblyHelper.CompileAssemblies()) { return; } var callCrawler = new CallCrawler(); using (var assemblyResolver = new DefaultAssemblyResolver()) { var compiledAssemblyPaths = AssemblyHelper.GetCompiledAssemblyPaths(); foreach (var dir in AssemblyHelper.GetPrecompiledAssemblyDirectories()) { assemblyResolver.AddSearchDirectory(dir); } foreach (var dir in AssemblyHelper.GetPrecompiledEngineAssemblyDirectories()) { assemblyResolver.AddSearchDirectory(dir); } foreach (var dir in AssemblyHelper.GetCompiledAssemblyDirectories()) { assemblyResolver.AddSearchDirectory(dir); } if (progressBar != null) { progressBar.Initialize("Analyzing Scripts", "Analyzing project scripts", m_PlayerAssemblies.Length); } // Analyse all Player assemblies, including Package assemblies. foreach (var assemblyPath in compiledAssemblyPaths) { if (progressBar != null) { progressBar.AdvanceProgressBar(string.Format("Analyzing {0} scripts", Path.GetFileName(assemblyPath))); } if (!File.Exists(assemblyPath)) { Debug.LogError(assemblyPath + " not found."); continue; } AnalyzeAssembly(assemblyPath, assemblyResolver, projectReport, callCrawler); } } if (progressBar != null) { progressBar.ClearProgressBar(); } callCrawler.BuildCallHierarchies(projectReport, progressBar); }