Пример #1
0
 private ConfigLoadResult(AnalyzerConfigState configState, AnalyzerConfigBuilder configBuilder,
                          IAnalyzerConfig config, Exception configException)
 {
     ConfigState     = configState;
     ConfigBuilder   = configBuilder;
     Config          = config;
     ConfigException = configException;
 }
Пример #2
0
 public DependencyAnalyzer(IAnalyzerConfig config,
                           ITypeDependencyEnumerator typeDependencyEnumerator,
                           MessageHandler traceMessageHandler)
 {
     _config = config ?? throw new ArgumentNullException(nameof(config));
     _typeDependencyEnumerator = typeDependencyEnumerator ?? throw new ArgumentNullException(nameof(typeDependencyEnumerator));
     _traceMessageHandler      = traceMessageHandler;
     _typeDependencyValidator  = new CachingTypeDependencyValidator(_config, _traceMessageHandler);
 }
Пример #3
0
        private static IDependencyAnalyzer CreateAnalyzer(IAnalyzerConfig config, bool useOutOfProcessAnalyzer)
        {
            var typeDependencyEnumerator = new Roslyn2TypeDependencyEnumerator(LogTraceToConsole);

            var analyzerFactory = new DependencyAnalyzerFactory(config, LogTraceToConsole);

            return(useOutOfProcessAnalyzer
                ? analyzerFactory.CreateOutOfProcess(ServiceAddressProvider.ServiceAddress)
                : analyzerFactory.CreateInProcess(typeDependencyEnumerator));
        }
Пример #4
0
        private void UpdateConfig()
        {
            var oldConfig = _config;

            _config = _configProvider.Config;

            if (oldConfig == _config)
            {
                return;
            }

            UpdateAnalyzer();
        }
        private void UpdateConfig()
        {
            var oldConfig = _config;

            _config = ConfigProvider.Config;

            if (oldConfig == _config)
            {
                return;
            }

            _typeDependencyValidator = CreateTypeDependencyValidator();
        }
Пример #6
0
        private void UpdateConfig()
        {
            var oldConfig = _config;

            _config = ConfigProvider.Config;

            if (oldConfig == _config)
            {
                return;
            }

            _typeDependencyValidator  = CreateTypeDependencyValidator();
            _sourcePathExclusionGlobs = _config.SourcePathExclusionPatterns.Select(Glob.Parse).ToArray();
        }
Пример #7
0
        public AnalyzerMessageBase[] AnalyzeProject(IAnalyzerConfig config, string[] sourcePaths, string[] referencedAssemblyPaths)
        {
            var resultBuilder = new AnalyzeProjectResultBuilder();

            var dependencyAnalyzer  = _dependencyAnalyzerFactory.Create(config);
            var illegalDependencies = dependencyAnalyzer.AnalyzeProject(sourcePaths, referencedAssemblyPaths);

            foreach (var illegalDependency in illegalDependencies)
            {
                resultBuilder.AddIllegalDependency(illegalDependency);
            }

            return(resultBuilder.ToArray());
        }
Пример #8
0
        public AnalyzerMessageBase[] AnalyzeProject(IAnalyzerConfig config, string[] sourcePaths, string[] referencedAssemblyPaths)
        {
            var traceMessageBuffer       = new List <string>();
            var typeDependencyValidator  = new CachingTypeDependencyValidator(config);
            var typeDependencyEnumerator = new Roslyn2TypeDependencyEnumerator(i => traceMessageBuffer.Add(i));

            var typeDependencies    = typeDependencyEnumerator.GetTypeDependencies(sourcePaths, referencedAssemblyPaths);
            var illegalDependencies = typeDependencies.Where(i => !typeDependencyValidator.IsAllowedDependency(i)).Take(config.MaxIssueCount);

            traceMessageBuffer.Add(GetCacheStatisticsMessage(typeDependencyValidator));

            var traceMessages             = traceMessageBuffer.Select(i => new TraceMessage(i));
            var illegalDependencyMessages = illegalDependencies.Select(i => new IllegalDependencyMessage(i));

            return(illegalDependencyMessages.OfType <AnalyzerMessageBase>().Concat(traceMessages).ToArray());
        }
Пример #9
0
        public AnalyzerMessageBase[] AnalyzeProject(IAnalyzerConfig config, string[] sourcePaths, string[] referencedAssemblyPaths)
        {
            var resultBuilder = new AnalyzeProjectResultBuilder();

            var typeDependencyEnumerator = GetTypeDependencyEnumerator(resultBuilder.AddTrace);
            var dependencyAnalyzer       = new DependencyAnalyzer(config, typeDependencyEnumerator, resultBuilder.AddTrace);
            var illegalDependencies      = dependencyAnalyzer.AnalyzeProject(sourcePaths, referencedAssemblyPaths);

            foreach (var illegalDependency in illegalDependencies)
            {
                resultBuilder.AddIllegalDependency(illegalDependency);
            }

            resultBuilder.AddCacheStatistics(dependencyAnalyzer.HitCount, dependencyAnalyzer.MissCount, dependencyAnalyzer.EfficiencyPercent);

            return(resultBuilder.ToArray());
        }
        public IRemoteMessage[] AnalyzeProject(IAnalyzerConfig config, string[] sourcePaths, string[] referencedAssemblyPaths)
        {
            var messageBuffer = new List <IRemoteMessage>();

            var typeDependencyEnumerator = GetTypeDependencyEnumerator(WrapIntoTraceMessage(messageBuffer));
            var typeDependencyValidator  = new CachingTypeDependencyValidator(config, WrapIntoTraceMessage(messageBuffer));

            var illegalDependencyMessages = typeDependencyEnumerator
                                            .GetTypeDependencies(sourcePaths, referencedAssemblyPaths)
                                            .Where(i => !typeDependencyValidator.IsAllowedDependency(i))
                                            .Take(config.MaxIssueCount + 1)
                                            .Select(i => new RemoteIllegalDependencyMessage(i));

            messageBuffer.AddRange(illegalDependencyMessages);

            WrapIntoTraceMessage(messageBuffer)(GetCacheStatisticsMessage(typeDependencyValidator));

            return(messageBuffer.ToArray());
        }
Пример #11
0
 public DependencyAnalyzerFactory(IAnalyzerConfig config, MessageHandler traceMessageHandler)
 {
     _config = config;
     _traceMessageHandler = traceMessageHandler;
 }
 public AnalyzerMessageBase[] AnalyzeProject(IAnalyzerConfig config, string[] sourcePaths, string[] referencedAssemblyPaths)
 {
     return(PerformCallWithRetries(i => i.AnalyzeProject(config, sourcePaths, referencedAssemblyPaths)));
 }
 public IDependencyAnalyzer Create(IAnalyzerConfig config)
 {
     return(new DependencyAnalyzer(config, _typeDependencyEnumerator, _traceMessageHandler));
 }
Пример #14
0
 public RemoteDependencyAnalyzerClient(IAnalyzerConfig config, string serviceAddress, MessageHandler traceMessageHandler)
 {
     _config              = config ?? throw new ArgumentNullException(nameof(config));
     _serviceAddress      = serviceAddress ?? throw new ArgumentNullException(nameof(serviceAddress));
     _traceMessageHandler = traceMessageHandler;
 }