コード例 #1
0
        private RootUstNode AnalyzeFile(SourceFileBuildResult sourceFileBuildResult, string projectRootPath)
        {
            CodeContext codeContext = new CodeContext(sourceFileBuildResult.PrePortSemanticModel,
                                                      sourceFileBuildResult.SemanticModel,
                                                      sourceFileBuildResult.SyntaxTree,
                                                      projectRootPath,
                                                      sourceFileBuildResult.SourceFilePath,
                                                      AnalyzerConfiguration,
                                                      Logger);

            Logger.LogDebug("Analyzing: " + sourceFileBuildResult.SourceFileFullPath);

            using CSharpRoslynProcessor processor = new CSharpRoslynProcessor(codeContext);

            var result = processor.Visit(codeContext.SyntaxTree.GetRoot());

            return(result as RootUstNode);
        }
コード例 #2
0
        private ProjectWorkspace AnalyzeProject(ProjectBuildResult projectResult)
        {
            Logger.LogDebug("Analyzing the project: " + projectResult.ProjectPath);
            ProjectWorkspace workspace = new ProjectWorkspace(projectResult.ProjectPath)
            {
                SourceFiles      = new UstList <string>(projectResult.SourceFiles),
                BuildErrors      = projectResult.BuildErrors,
                BuildErrorsCount = projectResult.BuildErrors.Count
            };

            if (AnalyzerConfiguration.MetaDataSettings.ReferenceData)
            {
                workspace.ExternalReferences = projectResult.ExternalReferences;
            }
            workspace.TargetFramework  = projectResult.TargetFramework;
            workspace.TargetFrameworks = projectResult.TargetFrameworks;

            foreach (var fileBuildResult in projectResult.SourceFileBuildResults)
            {
                CodeContext codeContext = new CodeContext(fileBuildResult.SemanticModel,
                                                          fileBuildResult.SyntaxTree,
                                                          workspace.ProjectRootPath,
                                                          fileBuildResult.SourceFilePath,
                                                          AnalyzerConfiguration,
                                                          Logger);

                Logger.LogDebug("Analyzing: " + fileBuildResult.SourceFileFullPath);

                using (CSharpRoslynProcessor processor = new CSharpRoslynProcessor(codeContext))
                {
                    var result = processor.Visit(codeContext.SyntaxTree.GetRoot());
                    workspace.SourceFileResults.Add((RootUstNode)result);
                }
            }

            return(workspace);
        }