private IEnumerable <IDependencyInfo> ExamineSource(ICodeFileInfo codeFile, ISolutionInfo solution, IList <ICodeFileInfo> parsedCodeFiles)
        {
            var result = GetCompilationResult(codeFile.GetContent());
            var nodes  = result.Flatten();


            var dependencies = nodes.Select(node => new DependencyTypeFactory().For(node))
                               .Where(dependency => dependency != null)
                               .Distinct(new DependencyComparer()).ToList();

            parsedCodeFiles.Add(codeFile);

            foreach (var dependencyInfo in dependencies)
            {
                dependencyInfo.CodeFileInfo = solution.FindCodeFileFor(dependencyInfo);
            }

            var codeFileInfos = dependencies
                                .Select(dependencyInfo => dependencyInfo.CodeFileInfo)
                                .Where(codeFileInfo => codeFileInfo != null && !parsedCodeFiles.Contains(codeFileInfo))
                                .Distinct().ToList();

            foreach (var code in codeFileInfos)
            {
                dependencies.AddRange(ExamineSource(code, solution, parsedCodeFiles));
            }

            return(dependencies);
        }
        private IEnumerable<IDependencyInfo> ExamineSource(ICodeFileInfo codeFile, ISolutionInfo solution, IList<ICodeFileInfo> parsedCodeFiles)
        {
            var result = GetCompilationResult(codeFile.GetContent());
            var nodes = result.Flatten();

            var dependencies = nodes.Select(node => new DependencyTypeFactory().For(node))
                .Where(dependency => dependency != null)
                .Distinct(new DependencyComparer()).ToList();

            parsedCodeFiles.Add(codeFile);

            foreach (var dependencyInfo in dependencies)
            {
                dependencyInfo.CodeFileInfo = solution.FindCodeFileFor(dependencyInfo);
            }

            var codeFileInfos = dependencies
                .Select(dependencyInfo => dependencyInfo.CodeFileInfo)
                .Where(codeFileInfo => codeFileInfo != null && !parsedCodeFiles.Contains(codeFileInfo))
                .Distinct().ToList();

            foreach (var code in codeFileInfos)
            {
                dependencies.AddRange(ExamineSource(code, solution, parsedCodeFiles));
            }

            return dependencies;
        }
        public IEnumerable<IDeclerationInfo> ExamineSource(ICodeFileInfo codeFile)
        {
            var result = GetCompilationResult(codeFile.GetContent());
            var nodes = result.Flatten();

            return nodes.Select(node => new DependencyTypeFactory().DeclerationFor(node, codeFile))
                .Where(dependency => dependency != null)
                .Distinct(new DeclerationComparer()).ToList();
        }
예제 #4
0
        public IEnumerable <IDeclerationInfo> ExamineSource(ICodeFileInfo codeFile)
        {
            var result = GetCompilationResult(codeFile.GetContent());
            var nodes  = result.Flatten();

            return(nodes.Select(node => new DependencyTypeFactory().DeclerationFor(node, codeFile))
                   .Where(dependency => dependency != null)
                   .Distinct(new DeclerationComparer()).ToList());
        }
예제 #5
0
 public IDeclerationInfo DeclerationFor(INode node, ICodeFileInfo codeFile)
 {
     if (node.IsA<TypeDeclaration>())
     {
         var creationNode = (TypeDeclaration)node;
         return new DeclerationInfo(creationNode.Name, codeFile);
     }
     return null;
 }
예제 #6
0
 public IDeclerationInfo DeclerationFor(INode node, ICodeFileInfo codeFile)
 {
     if (node.IsA <TypeDeclaration>())
     {
         var creationNode = (TypeDeclaration)node;
         return(new DeclerationInfo(creationNode.Name, codeFile));
     }
     return(null);
 }
예제 #7
0
        private void ResolveDependenciesFor(ICodeFileInfo selectedCodeFile)
        {
            var dependencies = wiring.GetDependencyExaminer().ExamineSource(selectedCodeFile, selectedCodeFile.Solution);

            DependencyViewer.DataContext = new
            {
                Dependencies = dependencies.Where(d => !d.IsExternal),
                selectedCodeFile.Declerations,
                selectedCodeFile.Project.References };

            filesToBuild = new BuildCodeFiles(selectedCodeFile, dependencies, selectedCodeFile.Project.References);
        }
예제 #8
0
        private void ResolveDependenciesFor(ICodeFileInfo selectedCodeFile)
        {
            var dependencies = wiring.GetDependencyExaminer().ExamineSource(selectedCodeFile, selectedCodeFile.Solution);

            DependencyViewer.DataContext = new
            {
                Dependencies = dependencies.Where(d => !d.IsExternal),
                selectedCodeFile.Declerations,
                selectedCodeFile.Project.References
            };

            filesToBuild = new BuildCodeFiles(selectedCodeFile, dependencies, selectedCodeFile.Project.References);
        }
        public IEnumerable <IDependencyInfo> ExamineSource(ICodeFileInfo codeFile, ISolutionInfo solution)
        {
            var dependencyInfos = ExamineSource(codeFile, solution, new List <ICodeFileInfo>()).Distinct(new DependencyComparer());

            return(dependencyInfos);
        }
 public IEnumerable<IDependencyInfo> ExamineSource(ICodeFileInfo codeFile, ISolutionInfo solution)
 {
     var dependencyInfos = ExamineSource(codeFile, solution, new List<ICodeFileInfo>()).Distinct(new DependencyComparer());
     return dependencyInfos;
 }
예제 #11
0
 public void AddCodeFile(ICodeFileInfo codeFile)
 {
     codeFiles.Add(codeFile);
 }
 public void BeforeEachTest()
 {
     codeFile = MockRepository.GenerateStub<ICodeFileInfo>();
     solution = new SolutionInfo(null, null);
 }
예제 #13
0
 public void AddCodeFile(ICodeFileInfo codeFile)
 {
     codeFiles.Add(codeFile);
 }
예제 #14
0
 public DeclerationInfo(string name, ICodeFileInfo codeFileInfo)
 {
     Name         = name;
     CodeFileInfo = codeFileInfo;
 }
예제 #15
0
 public DeclerationInfo(string name, ICodeFileInfo codeFileInfo)
 {
     Name = name;
     CodeFileInfo = codeFileInfo;
 }
예제 #16
0
 public BuildCodeFiles(ICodeFileInfo target, IEnumerable<IDependencyInfo> dependencies, IEnumerable<IReferenceInfo> references)
 {
     Target = target;
     Dependencies = dependencies;
     References = references;
 }
 public void BeforeEachTest()
 {
     codeFile = MockRepository.GenerateStub<ICodeFileInfo>();
 }
예제 #18
0
 public BuildCodeFiles(ICodeFileInfo target, IEnumerable <IDependencyInfo> dependencies, IEnumerable <IReferenceInfo> references)
 {
     Target       = target;
     Dependencies = dependencies;
     References   = references;
 }
예제 #19
0
 public void BeforeEachTest()
 {
     codeFile = MockRepository.GenerateStub <ICodeFileInfo>();
 }
 public void BeforeEachTest()
 {
     codeFile = MockRepository.GenerateStub <ICodeFileInfo>();
     solution = new SolutionInfo(null, null);
 }