public AddExpensiveCommentContextAction(ICSharpContextActionDataProvider dataProvider) { myDataProvider = dataProvider; mySwa = dataProvider.Solution.GetComponent <SolutionAnalysisService>(); myPerformanceContextProvider = dataProvider.Solution.GetComponent <PerformanceCriticalContextProvider>(); myExpensiveContextProvider = dataProvider.Solution.GetComponent <ExpensiveInvocationContextProvider>(); }
public AddDiscardAttributeContextAction([NotNull] ICSharpContextActionDataProvider dataProvider) { myDataProvider = dataProvider; mySwa = dataProvider.Solution.GetComponent <SolutionAnalysisService>(); myBurstContextProvider = dataProvider.Solution.GetComponent <BurstContextProvider>(); }
protected PerformanceAnalysisContextActionBase([NotNull] ICSharpContextActionDataProvider dataProvider) : base(dataProvider) { ExpensiveContextProvider = dataProvider.Solution.GetComponent <ExpensiveInvocationContextProvider>().NotNull(); PerformanceContextProvider = dataProvider.Solution.GetComponent <PerformanceCriticalContextProvider>().NotNull(); SolutionAnalysisService = dataProvider.Solution.GetComponent <SolutionAnalysisService>().NotNull(); }
public static bool IsMarkedSweaDependent( [CanBeNull] this ICallGraphContextProvider contextProvider, [CanBeNull] IDeclaredElement declaredElement, [CanBeNull] SolutionAnalysisService swea) { return(IsMarkedSweaDependent(contextProvider, declaredElement, swea?.Configuration)); }
public static DaemonProcessKind GetProcessKindForGraph( [NotNull] SolutionAnalysisService solutionAnalysisService) { return(IsSweaCompleted(solutionAnalysisService) ? DaemonProcessKind.GLOBAL_WARNINGS : DaemonProcessKind.VISIBLE_DOCUMENT); }
public EventHandlerDetector(ISolution solution, SolutionAnalysisService swa, SettingsStore settingsStore, CallGraphSwaExtensionProvider callGraphSwaExtension, UnityEventHandlerReferenceCache cache, PerformanceCriticalCodeCallGraphAnalyzer analyzer) : base(solution, swa, callGraphSwaExtension, settingsStore, analyzer) { myCallGraphSwaExtension = callGraphSwaExtension; myCache = cache; }
public static bool HasHotIcon(this IDeclaredElement element, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, IContextBoundSettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, DaemonProcessKind kind) { if (!settingsStore.GetValue((UnitySettings key) => key.EnableIconsForPerformanceCriticalCode)) { return(false); } if (!settingsStore.GetValue((UnitySettings key) => key.EnablePerformanceCriticalCodeHighlighting)) { return(false); } var usageChecker = swa.UsageChecker; if (usageChecker == null) { return(false); } var id = swa.GetElementId(element, true); if (!id.HasValue) { return(false); } return(callGraphSwaExtensionProvider.IsMarkedByCallGraphAnalyzer(analyzer.Id, id.Value, kind == DaemonProcessKind.GLOBAL_WARNINGS)); }
protected override void DoTest(IProject project) { var swea = SolutionAnalysisService.GetInstance(Solution); #if RIDER using (TestPresentationMap.Cookie()) #else using (new TestPresentationMap()) #endif using (TestPsiConfigurationSettings.Instance.PersistCachesCookie()) using (swea.RunAnalysisCookie()) { Lifetimes.Using(lifetime => { ChangeSettingsTemporarily(lifetime).BoundStore.SetValue(HighlightingSettingsAccessor.AnalysisEnabled, AnalysisScope.SOLUTION); var files = swea.GetFilesToAnalyze().OrderBy(f => f.Name).ToList(); foreach (var file in files) { swea.AnalyzeInvisibleFile(file); } ExecuteWithGold(writer => { var highlightingSettingsManager = HighlightingSettingsManager.Instance; foreach (var file in files) { if (file.LanguageType.IsNullOrUnknown()) { continue; } var pf = file.ToProjectFile(); if (pf == null) { continue; } if (!pf.Location.Name.EndsWith(".cs")) { continue; } var process = new TestHighlightingDumper(file, writer, DaemonStageManager.GetInstance(Solution).Stages, (highlighting, settingsStore) => { var attribute = highlightingSettingsManager.GetHighlightingAttribute(highlighting); return(highlightingSettingsManager.GetSeverity(highlighting, settingsStore) != Severity.INFO || attribute.OverlapResolve != OverlapResolveKind.NONE); }, CSharpLanguage.Instance); process.DoHighlighting(DaemonProcessKind.VISIBLE_DOCUMENT); process.DoHighlighting(DaemonProcessKind.GLOBAL_WARNINGS); process.Dump(); writer.WriteLine(); } }); }); } }
public PerformanceCriticalCodeAnalysisStage(SolutionAnalysisService swa, CallGraphActivityTracker tracker, PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, ExpensiveCodeCallGraphAnalyzer expensiveAnalyzer) { Swa = swa; Tracker = tracker; PerformanceAnalyzer = performanceAnalyzer; ExpensiveAnalyzer = expensiveAnalyzer; }
public UnityDeclarationHighlightingProviderBase(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer) { Solution = solution; Swa = swa; CallGraphSwaExtensionProvider = callGraphSwaExtensionProvider; Analyzer = analyzer; Settings = settingsStore.BindToContextTransient(ContextRange.Smart(solution.ToDataContext())); }
public UnityHighlightingContributor(ISolution solution, ISettingsStore settingsStore, ITextControlManager textControlManager, SolutionAnalysisService swa, PerformanceCriticalCodeCallGraphAnalyzer performanceCriticalCodeCallGraphAnalyzer) { Swa = swa; PerformanceAnalyzerId = performanceCriticalCodeCallGraphAnalyzer.AnalyzerId; Solution = solution; TextControlManager = textControlManager; SettingsStore = settingsStore.BindToContextTransient(ContextRange.Smart(solution.ToDataContext())); }
public PerformanceCriticalCodeAnalysisProcess([NotNull] IDaemonProcess process, [NotNull] ICSharpFile file, [NotNull] SolutionAnalysisService swa, CallGraphActivityTracker tracker, [NotNull] PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, [NotNull] ExpensiveCodeCallGraphAnalyzer expensiveCodeCallGraphAnalyzer) : base(process, file) { mySwa = swa; myTracker = tracker; myPerformanceAnalyzerId = performanceAnalyzer.AnalyzerId; myExpensiveAnalyzerId = expensiveCodeCallGraphAnalyzer.AnalyzerId; }
public RiderUnityCommonIconProvider(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnityApi api, UnityCodeInsightProvider codeInsightProvider, UnitySolutionTracker solutionTracker, ConnectionTracker connectionTracker, IconHost iconHost) : base(solution, swa, callGraphSwaExtensionProvider, settingsStore, analyzer, api) { myCodeInsightProvider = codeInsightProvider; mySolutionTracker = solutionTracker; myConnectionTracker = connectionTracker; myIconHost = iconHost; }
public UnityCommonIconProvider(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnityApi unityApi) { Solution = solution; Swa = swa; CallGraphSwaExtensionProvider = callGraphSwaExtensionProvider; Analyzer = analyzer; UnityApi = unityApi; Settings = settingsStore.BindToContextTransient(ContextRange.Smart(solution.ToDataContext())); }
public RiderInitialiseOnLoadCctorDetector(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnityCodeInsightFieldUsageProvider fieldUsageProvider, UnitySolutionTracker solutionTracker, ConnectionTracker connectionTracker, IconHost iconHost) : base(solution, swa, callGraphSwaExtensionProvider, settingsStore, analyzer) { myFieldUsageProvider = fieldUsageProvider; mySolutionTracker = solutionTracker; myConnectionTracker = connectionTracker; myIconHost = iconHost; }
public RiderEventHandlerDetector(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnitySceneDataLocalCache cache, UnityCodeInsightProvider codeInsightProvider, UnitySolutionTracker solutionTracker, ConnectionTracker connectionTracker, IconHost iconHost) : base(solution, swa, settingsStore, callGraphSwaExtensionProvider, cache, analyzer) { myCodeInsightProvider = codeInsightProvider; mySolutionTracker = solutionTracker; myConnectionTracker = connectionTracker; myIconHost = iconHost; }
public PerformanceCriticalCodeAnalysisProcess([NotNull] IDaemonProcess process, [NotNull] ICSharpFile file, [NotNull] SolutionAnalysisService swa, CallGraphActivityTracker tracker, [NotNull] PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, [NotNull] ExpensiveCodeCallGraphAnalyzer expensiveCodeCallGraphAnalyzer) : base(process, file) { mySwa = swa; myTracker = tracker; myPerformanceAnalyzerId = performanceAnalyzer.AnalyzerId; myExpensiveAnalyzerId = expensiveCodeCallGraphAnalyzer.AnalyzerId; myLineMarkerEnabled = DaemonProcess.ContextBoundSettingsStore.GetValue((UnitySettings key) => key.PerformanceHighlightingMode) == PerformanceHighlightingMode.Always; }
public RiderFieldDetector(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnityApi unityApi, UnityCodeInsightFieldUsageProvider fieldUsageProvider, UnitySolutionTracker solutionTracker, ConnectionTracker connectionTracker, IconHost iconHost, AssetSerializationMode assetSerializationMode) : base(solution, swa, callGraphSwaExtensionProvider, settingsStore, analyzer, unityApi) { myFieldUsageProvider = fieldUsageProvider; mySolutionTracker = solutionTracker; myConnectionTracker = connectionTracker; myIconHost = iconHost; myAssetSerializationMode = assetSerializationMode; }
public static bool HasHotIcon(this ICSharpDeclaration element, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, IContextBoundSettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, DaemonProcessKind kind) { var declaredElement = element.DeclaredElement; if (declaredElement == null) { return(false); } return(declaredElement.HasHotIcon(swa, callGraphSwaExtensionProvider, settingsStore, analyzer, kind)); }
public PerformanceCriticalCodeAnalysisStage(SolutionAnalysisService swa, UnitySolutionTracker solutionTracker, CallGraphActivityTracker tracker, CallGraphSwaExtensionProvider callGraphSwaExtension, PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, ExpensiveCodeCallGraphAnalyzer expensiveAnalyzer) { Swa = swa; mySolutionTracker = solutionTracker; Tracker = tracker; CallGraphSwaExtension = callGraphSwaExtension; PerformanceAnalyzer = performanceAnalyzer; ExpensiveAnalyzer = expensiveAnalyzer; }
protected override void DoTest(IProject project) { var swea = SolutionAnalysisService.GetInstance(Solution); using (TestPresentationMap.Cookie()) using (TestPsiConfigurationSettings.Instance.PersistCachesCookie()) using (swea.RunAnalysisCookie()) { Lifetime.Using(lifetime => { ChangeSettingsTemporarily(lifetime).BoundStore.SetValue(HighlightingSettingsAccessor.AnalysisEnabled, AnalysisScope.SOLUTION); var files = swea.GetFilesToAnalyze().OrderBy(f => f.Name).ToList(); foreach (var file in files) { swea.AnalyzeInvisibleFile(file); } ExecuteWithGold(this.TestMethodName + ".cs", writer => { foreach (var file in files) { if (file.LanguageType.IsNullOrUnknown()) { continue; } var pf = file.ToProjectFile(); if (pf == null) { continue; } if (!pf.Location.Name.EndsWith(".cs")) { continue; } var process = new TestHighlightingDumper(file, writer, DaemonStageManager.GetInstance(Solution).Stages, (highlighting, psiSourceFile, settingsStore) => { return(highlighting is PerformanceHighlightingBase); }, CSharpLanguage.Instance); process.DoHighlighting(DaemonProcessKind.VISIBLE_DOCUMENT); process.DoHighlighting(DaemonProcessKind.GLOBAL_WARNINGS); process.Dump(); } }); }); } }
protected override void DoTest(Lifetime lifetime, IProject testProject) { var position = GetCaretPosition(); IProjectFile item; if (position == null) { item = testProject.GetSubItemsRecursively().OfType <IProjectFile>().First("No project file"); } else { item = (IProjectFile)testProject.FindProjectItemsByLocation(position.FileName) .Single("No project file", "More than one project file"); } var swea = SolutionAnalysisService.GetInstance(Solution); Assert.IsTrue(item.Kind == ProjectItemKind.PHYSICAL_FILE); using (TestPresentationMap.Cookie()) using (swea.RunAnalysisCookie()) { using (var definition = Lifetime.Define(lifetime)) { var boundstore = ChangeSettingsTemporarily(definition.Lifetime).BoundStore; boundstore.SetValue(HighlightingSettingsAccessor.CalculateUnusedTypeMembers, InplaceUsageAnalysis); ITextControl textControl = position != null ? OpenTextControl(definition.Lifetime, position) : OpenTextControl(definition.Lifetime, item); { swea.ReanalyzeFile(item.ToSourceFile()); using (CompilationContextCookie.GetOrCreate(textControl.GetContext(Solution))) { ExecuteWithGold(item, writer => { var highlightings = GetHighlightings(textControl); DumpQuickFixesAvailability(writer, highlightings, textControl, Solution); }); } } } } }
public static void AddHotHighlighting(this IHighlightingConsumer consumer, SolutionAnalysisService swa, CallGraphSwaExtensionProvider swaExtensionProvider, ICSharpDeclaration element, PerformanceCriticalCodeCallGraphAnalyzer analyzer, IContextBoundSettingsStore settings, string text, string tooltip, DaemonProcessKind kind, IEnumerable <BulbMenuItem> items, bool onlyHot = false) { var isIconHot = element.HasHotIcon(swa, swaExtensionProvider, settings, analyzer, kind); if (onlyHot && !isIconHot) { return; } var highlighting = isIconHot ? new UnityHotGutterMarkInfo(items, element, tooltip) : (IHighlighting) new UnityGutterMarkInfo(items, element, tooltip); consumer.AddHighlighting(highlighting); }
protected override void DoTest(Lifetime lifetime, IProject testProject) { var swea = SolutionAnalysisService.GetInstance(Solution); using (swea.RunAnalysisCookie()) { var files = new List <IPsiSourceFile>(swea.GetFilesToAnalyze()); foreach (var file in files) { swea.AnalyzeInvisibleFile(file); } swea.AllFilesAnalyzed(); base.DoTest(lifetime, testProject); } }
protected override void DoTest(Lifetime lifetime, IProject project) { var swea = SolutionAnalysisService.GetInstance(Solution); using (TestPresentationMap.Cookie()) using (TestPsiConfigurationSettings.Instance.PersistCachesCookie()) using (swea.RunAnalysisCookie()) { ChangeSettingsTemporarily(lifetime).BoundStore.SetValue((UnitySettings key) => key.PerformanceHighlightingMode, PerformanceHighlightingMode.Always); var files = swea.GetFilesToAnalyze().OrderBy(f => f.Name).ToList(); swea.ReanalyzeAll(); ExecuteWithGold(TestMethodName + ".cs", writer => { foreach (var file in files) { if (file.LanguageType.IsNullOrUnknown()) { continue; } var pf = file.ToProjectFile(); if (pf == null) { continue; } if (!pf.Location.Name.EndsWith(".cs")) { continue; } var process = new TestHighlightingDumperWithOverridenStages(file, writer, DaemonStageManager.GetInstance(Solution).Stages, HighlightingPredicate, CSharpLanguage.Instance); process.DoHighlighting(DaemonProcessKind.VISIBLE_DOCUMENT); process.DoHighlighting(DaemonProcessKind.GLOBAL_WARNINGS); process.Dump(); } }); } }
protected override void DoTest(Lifetime lifetime, IProject testProject) { var swea = SolutionAnalysisService.GetInstance(Solution); using (swea.RunAnalysisCookie()) { ChangeSettingsTemporarily(lifetime).BoundStore.SetValue((UnitySettings key) => key.EnableIconsForBurstCode, false); ChangeSettingsTemporarily(lifetime).BoundStore.SetValue((UnitySettings key) => key.EnableIconsForPerformanceCriticalCode, false); var files = new List <IPsiSourceFile>(swea.GetFilesToAnalyze()); foreach (var file in files) { swea.AnalyzeInvisibleFile(file); } swea.AllFilesAnalyzed(); base.DoTest(lifetime, testProject); } }
protected override int GetOwnCount(SolutionAnalysisService swa, IGlobalUsageChecker usageChecker, IDeclaredElement element, ElementId?elementId) { Assertion.Assert(elementId.HasValue, "elementId.HasValue"); return(usageChecker.GetCounterValue(elementId.Value, myUnityEditorUsageCounter)); }
public FieldDetector(ISolution solution, SolutionAnalysisService swa, CallGraphSwaExtensionProvider callGraphSwaExtensionProvider, SettingsStore settingsStore, PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnityApi unityApi) : base(solution, swa, callGraphSwaExtensionProvider, settingsStore, analyzer) { myUnityApi = unityApi; }
public VSPerformanceCriticalCodeAnalysisProcess([NotNull] IDaemonProcess process, [NotNull] ICSharpFile file, [NotNull] SolutionAnalysisService swa, [NotNull] CallGraphActivityTracker tracker, [NotNull] PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, ExpensiveCodeCallGraphAnalyzer expensiveAnalyzer) : base(process, file, swa, tracker, performanceAnalyzer, expensiveAnalyzer) { }
public VSPerformanceCriticalCodeAnalysisStage(SolutionAnalysisService swa, UnitySolutionTracker solutionTracker, CallGraphActivityTracker tracker, PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer, ExpensiveCodeCallGraphAnalyzer expensiveAnalyzer) : base(swa, solutionTracker, tracker, performanceAnalyzer, expensiveAnalyzer) { }