public static void WriteSummaryReport(AnalysisConfig config, ProjectInfoAnalysisResult result, ILogger logger) { if (config == null) { throw new ArgumentNullException("config"); } if (result == null) { throw new ArgumentNullException("result"); } if (logger == null) { throw new ArgumentNullException("logger"); } var builder = new ProjectInfoReportBuilder(config, result, logger); builder.Generate(); }
/// <summary> /// Returns all of the valid files that can be analyzed. Logs warnings/info about /// files that cannot be analyzed. /// </summary> private static IEnumerable <string> GetFilesToAnalyze(ProjectInfo projectInfo, ILogger logger, string projectBaseDir, ProjectInfoAnalysisResult projectResult) { // We're only interested in files that exist and that are under the project root var result = new List <string>(); var baseDir = projectInfo.GetProjectDirectory(); foreach (string file in projectInfo.GetAllAnalysisFiles()) { if (File.Exists(file)) { if (IsInFolder(file, baseDir)) { result.Add(file); } else if (IsInFolder(file, projectBaseDir)) { projectResult.SharedFiles.Add(file); } else { logger.LogWarning(Resources.WARN_FileIsOutsideProjectDirectory, file, projectInfo.FullPath); } } else { logger.LogWarning(Resources.WARN_FileDoesNotExist, file); } } return(result); }
private static void InternalExecute(AnalysisConfig config, IEnumerable <string> userCmdLineArguments, ILogger logger, ProjectInfoAnalysisResult result) { ProjectInfoReportBuilder.WriteSummaryReport(config, result, logger); if (result.FullPropertiesFilePath == null) { // We expect a detailed error message to have been logged explaining // why the properties file generation could not be performed logger.LogInfo(Resources.MSG_PropertiesGenerationFailed); } else { string exeFileName = FindScannerExe(); result.RanToCompletion = ExecuteJavaRunner(config, userCmdLineArguments, logger, exeFileName, result.FullPropertiesFilePath); } }
public /* for test */ static ProjectInfoAnalysisResult GenerateFile(AnalysisConfig config, ILogger logger, IRoslynV1SarifFixer fixer) { if (config == null) { throw new ArgumentNullException("config"); } if (logger == null) { throw new ArgumentNullException("logger"); } string fileName = Path.Combine(config.SonarOutputDir, ProjectPropertiesFileName); logger.LogDebug(Resources.MSG_GeneratingProjectProperties, fileName); IEnumerable <ProjectInfo> projects = ProjectLoader.LoadFrom(config.SonarOutputDir).ToArray(); if (projects == null || !projects.Any()) { logger.LogError(Resources.ERR_NoProjectInfoFilesFound); return(new ProjectInfoAnalysisResult()); } TryFixSarifReports(logger, projects, fixer); string projectBaseDir = ComputeProjectBaseDir(config, projects); PropertiesWriter writer = new PropertiesWriter(config); AnalysisProperties properties = GetAnalysisProperties(config); var globalSourceEncoding = GetSourceEncoding(properties, new EncodingProvider()); ProjectInfoAnalysisResult result = ProcessProjectInfoFiles(projects, writer, logger, projectBaseDir, globalSourceEncoding); writer.WriteSonarProjectInfo(projectBaseDir, result.SharedFiles); IEnumerable <ProjectInfo> validProjects = result.GetProjectsByStatus(ProjectInfoValidity.Valid); if (validProjects.Any() || result.SharedFiles.Any()) { // Handle global settings properties = GetAnalysisPropertiesToWrite(properties, logger); writer.WriteGlobalSettings(properties); string contents = writer.Flush(); result.FullPropertiesFilePath = fileName; File.WriteAllText(result.FullPropertiesFilePath, contents, Encoding.ASCII); } else { // if the user tries to build multiple configurations at once there will be duplicate projects if (result.GetProjectsByStatus(ProjectInfoValidity.DuplicateGuid).Any()) { logger.LogError(Resources.ERR_NoValidButDuplicateProjects); } else { logger.LogError(Resources.ERR_NoValidProjectInfoFiles); } } return(result); }