Exemple #1
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)
            {
                var fileAnalysis = AnalyzeFile(fileBuildResult, workspace.ProjectRootPath);
                workspace.SourceFileResults.Add(fileAnalysis);
            }

            return(workspace);
        }
        public void BuildSolution()
        {
            var args   = new ProjectBuildArguments("d", "d", RepositorySourceType.CSharp, "cd");
            var result = new ProjectBuildResult();

            codebaseService.Setup(x => x.BuildSolution(args)).Returns(result);
            provider.BuildSolution(args);
        }
    protected void ExtractProjectZip(ProjectBuildResult project, string outputFolder)
    {
        EventBus.PublishAsync(new ProjectCreationProgressEvent
        {
            Message = "Extracting the solution archieve"
        }, false);

        using (var templateFileStream = new MemoryStream(project.ZipContent))
        {
            using (var zipInputStream = new ZipInputStream(templateFileStream))
            {
                var zipEntry = zipInputStream.GetNextEntry();
                while (zipEntry != null)
                {
                    if (string.IsNullOrWhiteSpace(zipEntry.Name))
                    {
                        zipEntry = zipInputStream.GetNextEntry();
                        continue;
                    }

                    var fullZipToPath = Path.Combine(outputFolder, zipEntry.Name);
                    var directoryName = Path.GetDirectoryName(fullZipToPath);

                    if (!string.IsNullOrEmpty(directoryName))
                    {
                        Directory.CreateDirectory(directoryName);
                    }

                    var fileName = Path.GetFileName(fullZipToPath);
                    if (fileName.Length == 0)
                    {
                        zipEntry = zipInputStream.GetNextEntry();
                        continue;
                    }

                    var buffer = new byte[4096]; // 4K is optimum
                    using (var streamWriter = File.Create(fullZipToPath))
                    {
                        StreamUtils.Copy(zipInputStream, streamWriter, buffer);
                    }

                    zipEntry = zipInputStream.GetNextEntry();
                }
            }
        }
    }
Exemple #4
0
        public void RunBuild()
        {
            var expectedArgs = new ProjectBuildArguments(viewModel.ProjectName,
                                                         viewModel.ProjectFile, viewModel.RepositorySourceType, @"c:\buildfolder");
            var buildResult = new ProjectBuildResult
            {
                BuildFolder = @"C:\folder", Artifacts = new[] { new FileDto {
                                                                    Name = "me.exe"
                                                                }, new FileDto {
                                                                    Name = "ignore.me"
                                                                } }
            };

            wsProvider.Setup(x => x.GetProjectBuildFolder(expectedArgs.ProjectName)).Returns(@"c:\buildfolder");
            wsProvider.Setup(x => x.BuildSolution(expectedArgs)).Returns(buildResult);

            view.RaiseBuildRequestEvent();
            view.ShowBuildArtifactsCalled.Should().BeTrue();
            view.ActualArtifacts.Count().Should().Be(2);
        }
        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);
        }
Exemple #6
0
 public void Dispose()
 {
     ProjectResult = null;
     ProjectBuildResult?.Dispose();
     ProjectBuildResult = null;
 }