예제 #1
0
        internal static SuppressionFile Load(ISuppressionFileSystemService fileSystemService, string suppressionFilePath,
                                             bool generateSuppressionBase)
        {
            fileSystemService.ThrowOnNull(nameof(fileSystemService));
            suppressionFilePath.ThrowOnNullOrWhiteSpace(nameof(suppressionFilePath));

            string assemblyName = fileSystemService.GetFileName(suppressionFilePath);

            if (string.IsNullOrEmpty(assemblyName))
            {
                throw new FormatException("Acuminator suppression file name cannot be empty");
            }

            var messages = new HashSet <SuppressMessage>();

            if (!generateSuppressionBase)
            {
                messages = LoadMessages(fileSystemService, suppressionFilePath);
            }

            ISuppressionFileWatcherService fileWatcher;

            lock (fileSystemService)
            {
                fileWatcher = fileSystemService.CreateWatcher(suppressionFilePath);
            }

            return(new SuppressionFile(assemblyName, suppressionFilePath, generateSuppressionBase, messages, fileWatcher));
        }
예제 #2
0
        public static HashSet <SuppressMessage> LoadMessages(ISuppressionFileSystemService fileSystemService, string path)
        {
            XDocument document;

            lock (fileSystemService)
            {
                document = fileSystemService.Load(path);
            }

            if (document == null)
            {
                return(new HashSet <SuppressMessage>());
            }

            HashSet <SuppressMessage> suppressionMessages = new HashSet <SuppressMessage>();

            foreach (XElement suppressionMessageXml in document.Root.Elements(SuppressMessageElement))
            {
                SuppressMessage?suppressMessage = SuppressMessage.MessageFromElement(suppressionMessageXml);

                if (suppressMessage != null)
                {
                    suppressionMessages.Add(suppressMessage.Value);
                }
            }

            return(suppressionMessages);
        }
예제 #3
0
        private SuppressionManager(ISuppressionFileSystemService fileSystemService, ICustomBuildActionSetter buildActionSetter)
        {
            _fileSystemService      = fileSystemService.CheckIfNull(nameof(fileSystemService));
            _suppressionFileCreator = new SuppressionFileCreator(this);

            BuildActionSetter = buildActionSetter;
        }
예제 #4
0
        public static HashSet <SuppressMessage> LoadMessages(ISuppressionFileSystemService fileSystemService, string path)
        {
            XDocument document;

            lock (fileSystemService)
            {
                document = fileSystemService.Load(path);
            }

            if (document == null)
            {
                return(new HashSet <SuppressMessage>());
            }

            return(document.Root.Elements(SuppressMessageElement)
                   .Select(e => MessageFromElement(e))
                   .ToHashSet());
        }
예제 #5
0
        internal XDocument MessagesToDocument(ISuppressionFileSystemService fileSystemService)
        {
            fileSystemService.ThrowOnNull(nameof(fileSystemService));
            XDocument document;

            lock (fileSystemService)
            {
                document = fileSystemService.Load(Path);
            }

            if (document == null)
            {
                throw new InvalidOperationException("Failed to open suppression file for edit");
            }

            document.Root.RemoveNodes();
            AddMessagesToDocument(document, Messages.Keys);

            return(document);
        }