Exemple #1
0
        private int AnalyzeAssembly(CheckerContext checkerContext, string assemblyFilename)
        {
            var dependencyFilename = Path.GetFileName(assemblyFilename) + ".dep";

            try {
                Log.WriteInfo("Analyzing " + assemblyFilename);
                using (var assemblyContext = checkerContext.OpenAssemblyContext(Path.GetFileName(assemblyFilename))) {
                    DependencyRuleSet ruleSetForAssembly = checkerContext.Load(dependencyFilename, _options.Directories);
                    if (ruleSetForAssembly == null && !String.IsNullOrEmpty(_options.DefaultRuleSetFile))
                    {
                        ruleSetForAssembly = checkerContext.Create(new DirectoryInfo("."), _options.DefaultRuleSetFile);
                    }
                    if (ruleSetForAssembly == null)
                    {
                        Log.WriteError(dependencyFilename +
                                       " not found in -d and -s directories, and no default rule set provided by -x");
                        return(6);
                    }
                    else
                    {
                        try {
                            IEnumerable <Dependency>          dependencies = DependencyReader.GetDependencies(assemblyFilename);
                            IEnumerable <DependencyRuleGroup> groups       = ruleSetForAssembly.ExtractDependencyGroups();
                            bool success = _checker.Check(assemblyContext, groups, dependencies, _options.ShowUnusedQuestionableRules);
                            if (!success)
                            {
                                return(3);
                            }
                            if (_options.DotFilename != null)
                            {
                                _grapher.Graph(ruleSetForAssembly, dependencies);
                            }
                        } catch (FileNotFoundException ex) {
                            Log.WriteError("Input file " + ex.FileName + " not found");
                            return(4);
                        }
                    }
                }
            } catch (FileLoadException ex2) {
                Log.WriteError(ex2.Message);
                return(2);
            }
            return(0);
        }