@Override protected AnalysisResults analyze(Path baseDir, Path workDir, Collection<ClientInputFile> inputFiles, Map<String, String> props, IssueListener issueListener, ProgressMonitor progressMonitor) { ConnectedAnalysisConfiguration config = new ConnectedAnalysisConfiguration(projectKey, baseDir, workDir, inputFiles, props); console.debug("Starting analysis with configuration:\n" + config.toString()); return sonarlint.analyze(config, issueListener, new ProjectLogOutput(console, projectSettings), progressMonitor); }
private String generateString() { StringBuilder sb = new StringBuilder(); sb.append("[\n"); if (projectKey != null) { sb.append(" projectKey: ").append(projectKey).append("\n"); } sb.append(" baseDir: ").append(baseDir()).append("\n"); sb.append(" workDir: ").append(workDir()).append("\n"); sb.append(" extraProperties: ").append(extraProperties()).append("\n"); sb.append(" inputFiles: [\n"); for (ClientInputFile inputFile : inputFiles()) { sb.append(" ").append(inputFile.uri()); sb.append(" (").append(getCharsetLabel(inputFile)).append(")"); if (inputFile.isTest()) { sb.append(" [test]"); } sb.append("\n"); } sb.append(" ]\n"); sb.append("]\n"); return sb.toString(); }
public ConnectedAnalysisConfiguration(@Nullable String projectKey, Path baseDir, Path workDir, Iterable<ClientInputFile> inputFiles, Map<String, String> extraProperties) { super(baseDir, workDir, inputFiles, extraProperties); this.projectKey = projectKey; this.toString = generateString(); }
@Override protected void doAnalysis(Map<String, String> properties, ReportFactory reportFactory, List<ClientInputFile> inputFiles, Path baseDirPath) { Date start = new Date(); ConnectedAnalysisConfiguration config = new ConnectedAnalysisConfiguration(moduleKey, baseDirPath, baseDirPath.resolve(".sonarlint"), inputFiles, properties); IssueCollector collector = new IssueCollector(); AnalysisResults result = engine.analyze(config, collector); engine.downloadServerIssues(getServerConfiguration(server), moduleKey); Collection<Trackable> trackables = matchAndTrack(baseDirPath, collector.get()); generateReports(trackables, result, reportFactory, baseDirPath.getFileName().toString(), baseDirPath, start); }
private static Map<String, String> loadQualityProfilesFromStorage(Sonarlint.QProfiles qProfiles, StorageReader storageReader, ConnectedAnalysisConfiguration analysisConfiguration) { Map<String, String> qProfilesByLanguage; if (analysisConfiguration.projectKey() == null) { LOG.debug("Use default quality profiles:"); qProfilesByLanguage = qProfiles.getDefaultQProfilesByLanguageMap(); } else { LOG.debug("Quality profiles:"); qProfilesByLanguage = storageReader.readProjectConfig(analysisConfiguration.projectKey()).getQprofilePerLanguageMap(); } return qProfilesByLanguage; }
@Override public void analyze(ConnectedAnalysisReq requestConfig, StreamObserver<org.sonarsource.sonarlint.daemon.proto.SonarlintDaemon.Issue> response) { try { List<ClientInputFile> files = new LinkedList<>(); List<InputFile> requestFiles = requestConfig.getFileList(); Path baseDir = Paths.get(requestConfig.getBaseDir()); for (InputFile f : requestFiles) { files.add(new DefaultClientInputFile(baseDir, Paths.get(f.getPath()), f.getIsTest(), Charset.forName(f.getCharset()), f.getUserObject(), trimToNull(f.getLanguage()))); } ConnectedAnalysisConfiguration config = new ConnectedAnalysisConfiguration( requestConfig.getModuleKey(), baseDir, Paths.get(requestConfig.getWorkDir()), files, requestConfig.getPropertiesMap()); engine.analyze(config, new ProxyIssueListener(response), logOutput, null); response.onCompleted(); } catch (Exception e) { LOGGER.error("Error analyzing", e); response.onError(e); } }
private ServerConfiguration(@Nullable StorageReader storage, StandaloneAnalysisConfiguration config, PropertyDefinitions propertyDefinitions) { super(propertyDefinitions); if (storage != null) { GlobalProperties globalProps = storage.readGlobalProperties(); addProperties(globalProps.getPropertiesMap()); if (config instanceof ConnectedAnalysisConfiguration && ((ConnectedAnalysisConfiguration) config).projectKey() != null) { Sonarlint.ProjectConfiguration projectConfig = storage.readProjectConfig(((ConnectedAnalysisConfiguration) config).projectKey()); addProperties(projectConfig.getPropertiesMap()); } } }
private String generateString() { StringBuilder sb = new StringBuilder(); sb.append("[\n"); if (projectKey != null) { sb.append(" projectKey: ").append(projectKey).append("\n"); } sb.append(" baseDir: ").append(baseDir()).append("\n"); sb.append(" workDir: ").append(workDir()).append("\n"); sb.append(" extraProperties: ").append(extraProperties()).append("\n"); sb.append(" inputFiles: [\n"); for (ClientInputFile inputFile : inputFiles()) { sb.append(" ").append(inputFile.uri()); sb.append(" (").append(getCharsetLabel(inputFile)).append(")"); if (inputFile.isTest()) { sb.append(" [test]"); } sb.append("\n"); } sb.append(" ]\n"); sb.append("]\n"); return sb.toString(); }
@Override protected ConnectedAnalysisConfiguration prepareAnalysisConfig(Path projectBaseDir, List<ClientInputFile> inputFiles, Map<String, String> mergedExtraProps) { SonarLintLogger.get().debug("Connected mode (using configuration of '" + binding.projectKey() + "' in server '" + binding.serverId() + "')"); return new ConnectedAnalysisConfiguration(binding.projectKey(), projectBaseDir, getProject().getWorkingDir(), inputFiles, mergedExtraProps); }
public MutableAnalysisSettings(StorageReader storage, StandaloneAnalysisConfiguration config, PropertyDefinitions propertyDefinitions) { super(propertyDefinitions); GlobalProperties globalProps = storage.readGlobalProperties(); addProperties(globalProps.getPropertiesMap()); if (config instanceof ConnectedAnalysisConfiguration && ((ConnectedAnalysisConfiguration) config).projectKey() != null) { ProjectConfiguration projectConfig = storage.readProjectConfig(((ConnectedAnalysisConfiguration) config).projectKey()); addProperties(projectConfig.getPropertiesMap()); } addDefaultProperties(); addProperties(config.extraProperties()); }
public ConnectedAnalysisConfiguration(@Nullable String projectKey, Path baseDir, Path workDir, Iterable<ClientInputFile> inputFiles, Map<String, String> extraProperties) { super(baseDir, workDir, inputFiles, extraProperties); this.projectKey = projectKey; this.toString = generateString(); }
public AnalysisResults analyze(ComponentContainer parent, ConnectedAnalysisConfiguration configuration, IssueListener issueListener, ProgressWrapper progress) { checkStatus(configuration.projectKey()); AnalysisContainer analysisContainer = new AnalysisContainer(parent, progress); DefaultAnalysisResult defaultAnalysisResult = new DefaultAnalysisResult(); analysisContainer.add( configuration, issueListener, new SonarQubeActiveRulesProvider(), DefaultServer.class, defaultAnalysisResult, SensorsExecutor.class); analysisContainer.execute(); return defaultAnalysisResult; } }