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(); } } } }
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); }
public void Dispose() { ProjectResult = null; ProjectBuildResult?.Dispose(); ProjectBuildResult = null; }