コード例 #1
0
        public UnityNUnitServiceProvider(ISolution solution,
                                         IPsiModules psiModules,
                                         ISymbolCache symbolCache,
                                         IUnitTestElementIdFactory idFactory,
                                         IUnitTestElementManager elementManager,
                                         NUnitTestProvider provider,
                                         IUnitTestingSettings settings,
                                         ISettingsStore settingsStore,
                                         ISettingsOptimization settingsOptimization,
                                         ISettingsCache settingsCache,
                                         UnitTestingCachingService cachingService,
                                         INUnitTestParametersProvider testParametersProvider,
                                         FrontendBackendHost frontendBackendHost,
                                         BackendUnityHost backendUnityHost,
                                         RunViaUnityEditorStrategy runViaUnityEditorStrategy,
                                         UnitySolutionTracker unitySolutionTracker)
            : base(solution, psiModules, symbolCache, idFactory, elementManager, provider, settings, settingsStore,
                   settingsOptimization, settingsCache, cachingService, testParametersProvider)
        {
            // Only in tests
            if (!frontendBackendHost.IsAvailable)
            {
                return;
            }

            myFrontendBackendModel = frontendBackendHost.Model.NotNull("frontendBackendHost.Model != null");
            myBackendUnityHost     = backendUnityHost;
            myUnityEditorStrategy  = runViaUnityEditorStrategy;
            myUnitySolutionTracker = unitySolutionTracker;
        }
コード例 #2
0
 public RiderEventHandlerDetector(ISolution solution,
                                  CallGraphSwaExtensionProvider callGraphSwaExtensionProvider,
                                  IApplicationWideContextBoundSettingStore settingsStore,
                                  AssetIndexingSupport assetIndexingSupport,
                                  PerformanceCriticalCodeCallGraphMarksProvider marksProvider,
                                  UnityEventsElementContainer unityEventsElementContainer,
                                  UnityCodeInsightProvider codeInsightProvider,
                                  UnityUsagesCodeVisionProvider usagesCodeVisionProvider,
                                  DeferredCacheController deferredCacheController,
                                  UnitySolutionTracker solutionTracker,
                                  BackendUnityHost backendUnityHost,
                                  IconHost iconHost, AssetSerializationMode assetSerializationMode,
                                  IElementIdProvider elementIdProvider)
     : base(solution, settingsStore, callGraphSwaExtensionProvider, unityEventsElementContainer, marksProvider,
            elementIdProvider)
 {
     myAssetIndexingSupport     = assetIndexingSupport;
     myCodeInsightProvider      = codeInsightProvider;
     myUsagesCodeVisionProvider = usagesCodeVisionProvider;
     myDeferredCacheController  = deferredCacheController;
     mySolutionTracker          = solutionTracker;
     myBackendUnityHost         = backendUnityHost;
     myIconHost = iconHost;
     myAssetSerializationMode = assetSerializationMode;
 }
 public UnityInstallationSynchronizer(Lifetime lifetime,
                                      FrontendBackendHost frontendBackendHost,
                                      BackendUnityHost backendUnityHost,
                                      UnityVersion unityVersion)
 {
     myBackendUnityHost = backendUnityHost;
     unityVersion.ActualVersionForSolution.Advise(lifetime,
                                                  version => NotifyFrontend(frontendBackendHost, unityVersion, version));
 }
コード例 #4
0
        public RunViaUnityEditorStrategy(ISolution solution,
                                         IUnitTestResultManager unitTestResultManager,
                                         BackendUnityHost backendUnityHost,
                                         NUnitTestProvider unitTestProvider,
                                         IUnitTestElementIdFactory idFactory,
                                         ISolutionSaver riderSolutionSaver,
                                         UnityRefresher unityRefresher,
                                         NotificationsModel notificationsModel,
                                         FrontendBackendHost frontendBackendHost,
                                         ILogger logger,
                                         Lifetime lifetime,
                                         PackageValidator packageValidator,
                                         JetBrains.Application.ActivityTrackingNew.UsageStatistics usageStatistics)
        {
            mySolution = solution;
            myUnitTestResultManager = unitTestResultManager;
            myBackendUnityHost      = backendUnityHost;
            myUnitTestProvider      = unitTestProvider;
            myIDFactory             = idFactory;
            myRiderSolutionSaver    = riderSolutionSaver;
            myUnityRefresher        = unityRefresher;
            myNotificationsModel    = notificationsModel;
            myFrontendBackendHost   = frontendBackendHost;
            myLogger           = logger;
            myLifetime         = lifetime;
            myPackageValidator = packageValidator;
            myUsageStatistics  = usageStatistics;

            myUnityProcessId = new Property <int?>(lifetime, "RunViaUnityEditorStrategy.UnityProcessId");

            myUnityProcessId.ForEachValue_NotNull(lifetime, (lt, processId) =>
            {
                var process = myLogger.CatchIgnore(() => Process.GetProcessById(processId.NotNull()));
                if (process == null)
                {
                    myUnityProcessId.Value = null;
                    return;
                }

                process.EnableRaisingEvents = true;

                void OnProcessExited(object sender, EventArgs a) => myUnityProcessId.Value = null;
                lt.Bracket(() => process.Exited += OnProcessExited, () => process.Exited -= OnProcessExited);

                if (process.HasExited)
                {
                    myUnityProcessId.Value = null;
                }
            });

            myBackendUnityHost.BackendUnityModel.ViewNotNull(lifetime, (lt, model) =>
            {
                // This will set the current value, if it exists
                model.UnityApplicationData.FlowInto(lt, myUnityProcessId, data => data.UnityProcessId);
            });
        }
コード例 #5
0
 public RiderInitialiseOnLoadCctorDetector(ISolution solution,
                                           IApplicationWideContextBoundSettingStore settingsStore,
                                           UnityCodeInsightFieldUsageProvider fieldUsageProvider,
                                           UnitySolutionTracker solutionTracker,
                                           BackendUnityHost backendUnityHost,
                                           IconHost iconHost, PerformanceCriticalContextProvider contextProvider)
     : base(solution, settingsStore, contextProvider)
 {
     myFieldUsageProvider = fieldUsageProvider;
     mySolutionTracker    = solutionTracker;
     myBackendUnityHost   = backendUnityHost;
     myIconHost           = iconHost;
 }
コード例 #6
0
        public static List <CodeLensEntryExtraActionModel> GetExtraActions(UnitySolutionTracker solutionTracker,
                                                                           BackendUnityHost backendUnityHost)
        {
            var extraActions = new List <CodeLensEntryExtraActionModel>();

            if (solutionTracker.IsUnityProject.HasTrueValue() && !backendUnityHost.IsConnectionEstablished())
            {
                extraActions.Add(new CodeLensEntryExtraActionModel("Unity is not running", null));
                extraActions.Add(new CodeLensEntryExtraActionModel("Start Unity Editor",
                                                                   AbstractUnityCodeInsightProvider.StartUnityActionId));
            }

            return(extraActions);
        }
コード例 #7
0
 public RiderInitialiseOnLoadCctorDetector(ISolution solution,
                                           CallGraphSwaExtensionProvider callGraphSwaExtensionProvider,
                                           IApplicationWideContextBoundSettingStore settingsStore,
                                           PerformanceCriticalCodeCallGraphMarksProvider marksProvider,
                                           UnityCodeInsightFieldUsageProvider fieldUsageProvider,
                                           UnitySolutionTracker solutionTracker,
                                           BackendUnityHost backendUnityHost,
                                           IconHost iconHost, IElementIdProvider elementIdProvider)
     : base(solution, callGraphSwaExtensionProvider, settingsStore, marksProvider, elementIdProvider)
 {
     myFieldUsageProvider = fieldUsageProvider;
     mySolutionTracker    = solutionTracker;
     myBackendUnityHost   = backendUnityHost;
     myIconHost           = iconHost;
 }
コード例 #8
0
 public RiderUnityCommonIconProvider(ISolution solution,
                                     IApplicationWideContextBoundSettingStore settingsStore,
                                     UnityApi api,
                                     UnityCodeInsightProvider codeInsightProvider,
                                     UnitySolutionTracker solutionTracker,
                                     BackendUnityHost backendUnityHost,
                                     IconHost iconHost, PerformanceCriticalContextProvider contextProvider,
                                     IEnumerable <IPerformanceAnalysisBulbItemsProvider> menuItemProviders)
     : base(solution, api, settingsStore, contextProvider, menuItemProviders)
 {
     myCodeInsightProvider = codeInsightProvider;
     mySolutionTracker     = solutionTracker;
     myBackendUnityHost    = backendUnityHost;
     myIconHost            = iconHost;
 }
コード例 #9
0
 public UnityUsagesAsyncFinderCallback(LifetimeDefinition progressBarLifetimeDefinition,
                                       Lifetime componentLifetime, UnityUsagesFinderConsumer consumer,
                                       FrontendBackendHost frontendBackendHost,
                                       BackendUnityHost backendUnityHost, IShellLocks shellLocks,
                                       string displayName, AssetFindUsagesResultBase selected,
                                       bool focusUnity)
 {
     myProgressBarLifetimeDefinition = progressBarLifetimeDefinition;
     myComponentLifetime             = componentLifetime;
     myConsumer            = consumer;
     myFrontendBackendHost = frontendBackendHost;
     myBackendUnityHost    = backendUnityHost;
     myShellLocks          = shellLocks;
     myDisplayName         = displayName;
     mySelected            = selected;
 }
コード例 #10
0
 public RiderUnityCommonIconProvider(ISolution solution,
                                     CallGraphSwaExtensionProvider callGraphSwaExtensionProvider,
                                     IApplicationWideContextBoundSettingStore settingsStore,
                                     PerformanceCriticalCodeCallGraphMarksProvider marksProvider, UnityApi api,
                                     UnityCodeInsightProvider codeInsightProvider,
                                     UnitySolutionTracker solutionTracker,
                                     BackendUnityHost backendUnityHost,
                                     IconHost iconHost, IElementIdProvider provider)
     : base(solution, api, callGraphSwaExtensionProvider, settingsStore, marksProvider, provider)
 {
     myCodeInsightProvider = codeInsightProvider;
     mySolutionTracker     = solutionTracker;
     myBackendUnityHost    = backendUnityHost;
     myIconHost            = iconHost;
     myProvider            = provider;
 }
コード例 #11
0
        public UnityController(Lifetime lifetime,
                               ISolution solution,
                               BackendUnityHost backendUnityHost,
                               UnityVersion unityVersion)
        {
            if (solution.GetData(ProjectModelExtensions.ProtocolSolutionKey) == null)
            {
                return;
            }

            myBackendUnityHost     = backendUnityHost;
            myUnityVersion         = unityVersion;
            mySolution             = solution;
            myLifetime             = lifetime;
            myFrontendBackendModel = solution.GetProtocolSolution().GetFrontendBackendModel();
        }
 public RiderUnityCommonIconProvider(ISolution solution,
                                     IApplicationWideContextBoundSettingStore settingsStore,
                                     UnityApi api,
                                     UnityCodeInsightProvider codeInsightProvider,
                                     UnitySolutionTracker solutionTracker,
                                     BackendUnityHost backendUnityHost,
                                     IconHost iconHost, PerformanceCriticalContextProvider contextProvider)
     : base(solution, api, settingsStore, contextProvider)
 {
     mySolution            = solution;
     myTextControlManager  = mySolution.GetComponent <ITextControlManager>();
     myCodeInsightProvider = codeInsightProvider;
     mySolutionTracker     = solutionTracker;
     myBackendUnityHost    = backendUnityHost;
     myIconHost            = iconHost;
 }
コード例 #13
0
 public RiderFieldDetector(ISolution solution,
                           IApplicationWideContextBoundSettingStore settingsStore,
                           UnityApi unityApi,
                           UnityCodeInsightFieldUsageProvider fieldUsageProvider,
                           DeferredCacheController deferredCacheController,
                           UnitySolutionTracker solutionTracker,
                           BackendUnityHost backendUnityHost,
                           IconHost iconHost, AssetSerializationMode assetSerializationMode,
                           PerformanceCriticalContextProvider contextProvider)
     : base(solution, settingsStore, unityApi, contextProvider)
 {
     myFieldUsageProvider      = fieldUsageProvider;
     myDeferredCacheController = deferredCacheController;
     mySolutionTracker         = solutionTracker;
     myBackendUnityHost        = backendUnityHost;
     myIconHost = iconHost;
     myAssetSerializationMode = assetSerializationMode;
 }
        public UnityRiderAlternateProjectOutputProvider(Lifetime lifetime, BackendUnityHost backendUnityHost,
                                                        IShellLocks shellLocks)
            : base(lifetime)
        {
            myShellLocks = shellLocks;

            myProjectNameToOutputFilePathMap = new ConcurrentDictionary <string, FileSystemPath>();

            backendUnityHost.BackendUnityModel.ViewNotNull(lifetime, (modelLifetime, backendUnityModel) =>
            {
                backendUnityModel.CompiledAssemblies.AdviseNotNull(modelLifetime, compiledAssemblies =>
                {
                    myProjectNameToOutputFilePathMap =
                        compiledAssemblies.ToDictionary(a => a.Name, a => FileSystemPath.TryParse(a.OutputPath));
                    PathsChanged.Fire();
                });
            });
        }
コード例 #15
0
        public UnityRefresher(IShellLocks locks, Lifetime lifetime, ISolution solution,
                              BackendUnityHost backendUnityHost,
                              IApplicationWideContextBoundSettingStore settingsStore,
                              ILogger logger, UnityVersion unityVersion)
        {
            myLocks            = locks;
            myLifetime         = lifetime;
            mySolution         = solution;
            myBackendUnityHost = backendUnityHost;
            myLogger           = logger;
            myUnityVersion     = unityVersion;

            if (solution.GetData(ProjectModelExtensions.ProtocolSolutionKey) == null)
            {
                return;
            }

            myBoundSettingsStore = settingsStore.BoundSettingsStore;
        }
 public UnityEditorFindUsageResultCreator(Lifetime lifetime, ISolution solution,
                                          SearchDomainFactory searchDomainFactory, IShellLocks locks,
                                          AssetHierarchyProcessor assetHierarchyProcessor,
                                          BackendUnityHost backendUnityHost,
                                          FrontendBackendHost frontendBackendHost,
                                          UnityExternalFilesModuleFactory externalFilesModuleFactory,
                                          IPersistentIndexManager persistentIndexManager,
                                          [CanBeNull] RiderBackgroundTaskHost backgroundTaskHost = null)
 {
     myLifetime = lifetime;
     mySolution = solution;
     myLocks    = locks;
     myAssetHierarchyProcessor = assetHierarchyProcessor;
     myBackendUnityHost        = backendUnityHost;
     myBackgroundTaskHost      = backgroundTaskHost;
     myYamlSearchDomain        = searchDomainFactory.CreateSearchDomain(externalFilesModuleFactory.PsiModule);
     myFrontendBackendHost     = frontendBackendHost;
     myPersistentIndexManager  = persistentIndexManager;
     mySolutionDirectoryPath   = solution.SolutionDirectory;
 }
コード例 #17
0
 public RiderTypeDetector(ISolution solution,
                          IApplicationWideContextBoundSettingStore settingsStore,
                          UnityApi unityApi,
                          AssetIndexingSupport assetIndexingSupport,
                          UnityUsagesCodeVisionProvider usagesCodeVisionProvider,
                          UnityCodeInsightProvider codeInsightProvider,
                          AssetScriptUsagesElementContainer assetScriptUsagesElementContainer,
                          DeferredCacheController deferredCacheController, UnitySolutionTracker solutionTracker,
                          BackendUnityHost backendUnityHost,
                          IconHost iconHost, AssetSerializationMode assetSerializationMode,
                          PerformanceCriticalContextProvider contextProvider)
     : base(solution, settingsStore, unityApi, contextProvider)
 {
     myAssetIndexingSupport              = assetIndexingSupport;
     myUsagesCodeVisionProvider          = usagesCodeVisionProvider;
     myCodeInsightProvider               = codeInsightProvider;
     myAssetScriptUsagesElementContainer = assetScriptUsagesElementContainer;
     myDeferredCacheController           = deferredCacheController;
     mySolutionTracker        = solutionTracker;
     myBackendUnityHost       = backendUnityHost;
     myIconHost               = iconHost;
     myAssetSerializationMode = assetSerializationMode;
 }
コード例 #18
0
        public static bool IsUnityUnitTestStrategy(UnitySolutionTracker unitySolutionTracker, FrontendBackendModel frontendBackendModel, BackendUnityHost backendUnityHost)
        {
            if (!unitySolutionTracker.IsUnityProjectFolder.HasTrueValue())
            {
                return(false);
            }

            // first run from gutter mark should try to run in Unity by default. https://github.com/JetBrains/resharper-unity/issues/605
            return(!frontendBackendModel.UnitTestPreference.HasValue() && backendUnityHost.BackendUnityModel.Value != null ||
                   (frontendBackendModel.UnitTestPreference.HasValue() && frontendBackendModel.UnitTestPreference.Value != UnitTestLaunchPreference.NUnit));
        }
        public GeneratedFileNotification(Lifetime lifetime,
                                         FrontendBackendHost frontendBackendHost,
                                         BackendUnityHost backendUnityHost,
                                         UnitySolutionTracker solutionTracker,
                                         ISolution solution,
                                         AsmDefNameCache asmDefNameCache,
                                         [CanBeNull] TextControlHost textControlHost             = null,
                                         [CanBeNull] SolutionLifecycleHost solutionLifecycleHost = null,
                                         [CanBeNull] NotificationPanelHost notificationPanelHost = null)
        {
            if (solutionLifecycleHost == null)
            {
                return;
            }

            if (!solutionTracker.IsUnityGeneratedProject.Value)
            {
                return;
            }

            var fullStartupFinishedLifetimeDefinition = new LifetimeDefinition(lifetime);

            solutionLifecycleHost.FullStartupFinished.Advise(fullStartupFinishedLifetimeDefinition.Lifetime, _ =>
            {
                textControlHost.ViewHostTextControls(lifetime, (lt, id, host) =>
                {
                    var projectFile = host.ToProjectFile(solution);
                    if (projectFile == null)
                    {
                        return;
                    }

                    if (!projectFile.Location.ExtensionNoDot.Equals("csproj", StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }

                    backendUnityHost.BackendUnityModel.ViewNotNull(lt, (modelLifetime, backendUnityModel) =>
                    {
                        var name = projectFile.Location.NameWithoutExtension;

                        IPath path;
                        using (ReadLockCookie.Create())
                        {
                            path = asmDefNameCache.GetPathFor(name)?.TryMakeRelativeTo(solution.SolutionFilePath);
                        }

                        var elements = new LocalList <INotificationPanelHyperlink>();
                        if (path != null)
                        {
                            var strPath = path.Components.Join("/").RemoveStart("../");
                            elements.Add(new NotificationPanelCallbackHyperlink(modelLifetime,
                                                                                "Edit corresponding .asmdef in Unity", false,
                                                                                () =>
                            {
                                frontendBackendHost.Do(t =>
                                {
                                    t.AllowSetForegroundWindow.Start(modelLifetime, Unit.Instance)
                                    .Result.AdviseOnce(modelLifetime, __ =>
                                    {
                                        backendUnityHost.BackendUnityModel.Value?.ShowFileInUnity.Fire(strPath);
                                    });
                                });
                            }));
                        }

                        notificationPanelHost.AddNotificationPanel(modelLifetime, host,
                                                                   new NotificationPanel("This file is generated by Unity. Any changes made will be lost.",
                                                                                         "UnityGeneratedFile", elements.ToArray()));
                    });
                });

                fullStartupFinishedLifetimeDefinition.Terminate();
            });
        }