private ICodeCleanupFilesProvider TryGetFilteredProvider([NotNull] ICodeCleanupFilesProvider originalProvider) { try { var solutionDir = originalProvider.Solution.SolutionFilePath.Directory.FullPath; var gitModificationResolver = new GitModificationsResolver(solutionDir); if (!gitModificationResolver.IsValidRepository) { MessageBox.ShowError($"[ReSharper Helpers] Unable to resolve solution directory as a git repository:{Environment.NewLine}{solutionDir}"); return(null); } var modifiedFiles = gitModificationResolver .GetModifiedFiles() .Select(f => FileSystemPath.Parse(f, FileSystemPathInternStrategy.TRY_GET_INTERNED_BUT_DO_NOT_INTERN)) .ToSet(); var filteredFiles = originalProvider.GetFiles() .Where(file => { var loc = file.GetLocation(); return(!loc.IsEmpty && modifiedFiles.Contains(loc)); }) .ToArray(); return(new FilteredCodeCleanupProvider(originalProvider, filteredFiles)); } catch (Exception ex) { MessageBox.ShowError($"[ReSharper Helpers] Unexpected error in code cleanup initialization:{Environment.NewLine}{ex}"); return(null); } }
public FilteredCodeCleanupProvider([NotNull] ICodeCleanupFilesProvider innerProvider, [NotNull] IList <IPsiSourceFile> filteredFiles) { this._innerProvider = innerProvider ?? throw new ArgumentNullException(nameof(innerProvider)); this._filteredFiles = filteredFiles ?? throw new ArgumentNullException(nameof(filteredFiles)); }