public DefaultInputProject provide(ProjectBuildersExecutor projectBuildersExecutor, ProjectReactorValidator validator, ProjectReactor projectReactor, ScannerComponentIdGenerator scannerComponentIdGenerator) { if (project == null) { // 1 Apply project builders projectBuildersExecutor.execute(projectReactor); // 2 Validate final reactor validator.validate(projectReactor); // 3 Create project project = new DefaultInputProject(projectReactor.getRoot(), scannerComponentIdGenerator.getAsInt()); LOG.info("Project key: {}", project.key()); LOG.info("Base dir: {}", project.getBaseDir().toAbsolutePath().toString()); LOG.info("Working dir: {}", project.getWorkDir().toAbsolutePath().toString()); LOG.debug("Project global encoding: {}, default locale: {}", project.getEncoding().displayName(), Locale.getDefault()); } return project; } }
private void setFields(DefaultInputProject project, DefaultAnalysisMode mode, StatusDetection statusDetection) { setWorkDir(project.getWorkDir()); setEncoding(project.getEncoding()); // filter the files sensors have access to if (!mode.scanAllFiles()) { setDefaultPredicate(p -> new SameInputFilePredicate(p, statusDetection, project.definition().getKeyWithBranch())); } }
@Test public void should_lazy_load_reference_hashes_when_status_changed_on_branch() throws Exception { final String source = "source"; FileUtils.write(ioFile, source, StandardCharsets.UTF_8); when(project.getKeyWithBranch()).thenReturn("foo:myBranch"); when(file.getProjectRelativePath()).thenReturn("src/Foo.java"); String key = "foo:myBranch:src/Foo.java"; when(file.status()).thenReturn(InputFile.Status.CHANGED); when(lastSnapshots.getLineHashes(key)).thenReturn(new String[] {md5Hex(source)}); assertThat(sourceHashHolder.getHashedReference().getHash(1)).isEqualTo(md5Hex(source)); verify(lastSnapshots).getLineHashes(key); assertThat(sourceHashHolder.getHashedReference().getHash(1)).isEqualTo(md5Hex(source)); Mockito.verifyNoMoreInteractions(lastSnapshots); }
public Path metadataFilePath() { Optional<String> metadataFilePath = configuration.get(METADATA_FILE_PATH_KEY); if (metadataFilePath.isPresent()) { Path metadataPath = Paths.get(metadataFilePath.get()); if (!metadataPath.isAbsolute()) { throw MessageException.of(String.format("Property '%s' must point to an absolute path: %s", METADATA_FILE_PATH_KEY, metadataFilePath.get())); } return project.getBaseDir().resolve(metadataPath); } else { return project.getWorkDir().resolve(METADATA_DUMP_FILENAME); } }
public static DefaultInputProject newDefaultInputProject(ProjectDefinition projectDefinition) { return new DefaultInputProject(projectDefinition, TestInputFileBuilder.nextBatchId()); }
private DefaultIssueLocation rewriteLocation(DefaultIssueLocation location) { InputComponent component = location.inputComponent(); Optional<Path> dirOrModulePath = Optional.empty(); if (component instanceof DefaultInputDir) { DefaultInputDir dirComponent = (DefaultInputDir) component; dirOrModulePath = Optional.of(project.getBaseDir().relativize(dirComponent.path())); } else if (component instanceof DefaultInputModule && !Objects.equals(project.key(), component.key())) { DefaultInputModule moduleComponent = (DefaultInputModule) component; dirOrModulePath = Optional.of(project.getBaseDir().relativize(moduleComponent.getBaseDir())); } if (dirOrModulePath.isPresent()) { String path = PathUtils.sanitize(dirOrModulePath.get().toString()); DefaultIssueLocation fixedLocation = new DefaultIssueLocation(); fixedLocation.on(project); StringBuilder fullMessage = new StringBuilder(); if (!isNullOrEmpty(path)) { fullMessage.append("[").append(path).append("] "); } fullMessage.append(location.message()); fixedLocation.message(fullMessage.toString()); return fixedLocation; } else { return location; } } }
@VisibleForTesting public DefaultProjectFileSystem(DefaultInputProject project, DefaultAnalysisMode mode, StatusDetection statusDetection) { super(project.getBaseDir()); setFields(project, mode, statusDetection); }
private ScannerReport.Component.Builder prepareProjectBuilder() { ScannerReport.Component.Builder projectBuilder = ScannerReport.Component.newBuilder(); projectBuilder.setRef(project.scannerId()); projectBuilder.setType(ComponentType.PROJECT); // Here we want key without branch projectBuilder.setKey(project.key()); // protocol buffers does not accept null values String name = getName(project); if (name != null) { projectBuilder.setName(name); } String description = getDescription(project); if (description != null) { projectBuilder.setDescription(description); } String version = project.getOriginalVersion(); if (version != null) { projectBuilder.setVersion(version); } writeLinks(project, projectBuilder); return projectBuilder; }
@Test public void move_submodule_issue_to_project_root() { File subModuleDirectory = new File(project.getBaseDir().toString(), "bar"); subModuleDirectory.mkdir(); ProjectDefinition subModuleDefinition = ProjectDefinition.create() .setKey("foo/bar") .setBaseDir(subModuleDirectory) .setWorkDir(subModuleDirectory); project.definition().addSubProject(subModuleDefinition); DefaultInputModule subModule = new DefaultInputModule(subModuleDefinition); SensorStorage storage = mock(SensorStorage.class); DefaultIssue issue = new DefaultIssue(project, storage) .at(new DefaultIssueLocation() .on(subModule) .message("Wrong way!")) .forRule(RuleKey.of("repo", "rule")) .overrideSeverity(Severity.BLOCKER); assertThat(issue.primaryLocation().inputComponent()).isEqualTo(project); assertThat(issue.ruleKey()).isEqualTo(RuleKey.of("repo", "rule")); assertThat(issue.primaryLocation().textRange()).isNull(); assertThat(issue.primaryLocation().message()).isEqualTo("[bar] Wrong way!"); assertThat(issue.overriddenSeverity()).isEqualTo(Severity.BLOCKER); issue.save(); verify(storage).store(issue); }
@Override public String projectKey() { return project.key(); }
public DefaultInputModuleHierarchy provide(ScannerComponentIdGenerator scannerComponentIdGenerator, DefaultInputProject project) { if (hierarchy == null) { LOG.debug("Creating module hierarchy"); DefaultInputModule root = createModule(project.definition(), project.scannerId()); Map<DefaultInputModule, DefaultInputModule> parents = createChildren(root, scannerComponentIdGenerator, new HashMap<>()); if (parents.isEmpty()) { hierarchy = new DefaultInputModuleHierarchy(root); } else { hierarchy = new DefaultInputModuleHierarchy(root, parents); } } return hierarchy; }
public TempFolder provide(DefaultInputProject project) { if (projectTempFolder == null) { Path workingDir = project.getWorkDir(); Path tempDir = workingDir.normalize().resolve(TMP_NAME); try { Files.deleteIfExists(tempDir); Files.createDirectories(tempDir); } catch (IOException e) { throw new IllegalStateException("Unable to create root temp directory " + tempDir, e); } projectTempFolder = new DefaultTempFolder(tempDir.toFile(), true); } return projectTempFolder; }
private void writeJsonProject(JsonWriter json) { json .beginObject() .prop("key", project.definition().getKeyWithBranch()) .endObject(); }
@Test public void publishMeasures() throws Exception { DefaultMeasure<Integer> measure = new DefaultMeasure<Integer>().forMetric(CoreMetrics.LINES_TO_COVER) .withValue(2); // String value DefaultMeasure<String> stringMeasure = new DefaultMeasure<String>().forMetric(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION) .withValue("foo bar"); when(measureCache.byComponentKey(inputFile.key())).thenReturn(asList(measure, stringMeasure)); publisher.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); assertThat(reader.readComponentMeasures(project.scannerId())).hasSize(0); try (CloseableIterator<ScannerReport.Measure> componentMeasures = reader.readComponentMeasures(inputFile.scannerId())) { assertThat(componentMeasures).hasSize(2); } }
public CpdSettings(Configuration config, DefaultInputProject project) { this.settings = config; this.branch = project.getBranch(); }
private SensorContextTester(Path moduleBaseDir) { this.settings = new MapSettings(); this.fs = new DefaultFileSystem(moduleBaseDir).setEncoding(Charset.defaultCharset()); this.activeRules = new ActiveRulesBuilder().build(); this.sensorStorage = new InMemorySensorStorage(); this.project = new DefaultInputProject(ProjectDefinition.create().setKey("projectKey").setBaseDir(moduleBaseDir.toFile()).setWorkDir(moduleBaseDir.resolve(".sonar").toFile())); this.module = new DefaultInputModule(ProjectDefinition.create().setKey("projectKey").setBaseDir(moduleBaseDir.toFile()).setWorkDir(moduleBaseDir.resolve(".sonar").toFile())); this.runtime = SonarRuntimeImpl.forSonarQube(ApiVersion.load(System2.INSTANCE), SonarQubeSide.SCANNER); }
if (!realAbsoluteFile.startsWith(project.getBaseDir())) { LOG.warn("File '{}' is ignored. It is not located in project basedir '{}'.", realAbsoluteFile.toAbsolutePath(), project.getBaseDir()); return; return; Path projectRelativePath = project.getBaseDir().relativize(realAbsoluteFile); Path moduleRelativePath = module.getBaseDir().relativize(realAbsoluteFile); boolean included = evaluateInclusionsFilters(moduleExclusionFilters, realAbsoluteFile, projectRelativePath, moduleRelativePath, type); DefaultIndexedFile indexedFile = new DefaultIndexedFile(realAbsoluteFile, project.key(), projectRelativePath.toString(), moduleRelativePath.toString(),
public DefaultProjectFileSystem(InputComponentStore inputComponentStore, DefaultInputProject project, DefaultAnalysisMode mode, StatusDetection statusDetection) { super(project.getBaseDir(), inputComponentStore); setFields(project, mode, statusDetection); }
@Before public void setUp() throws IOException { when(project.getBaseDir()).thenReturn(temp.newFolder().toPath()); when(project.getWorkDir()).thenReturn(temp.newFolder().toPath()); }
private ScannerReport.Component.Builder prepareProjectBuilder() { ScannerReport.Component.Builder projectBuilder = ScannerReport.Component.newBuilder(); projectBuilder.setRef(project.scannerId()); projectBuilder.setType(ComponentType.PROJECT); // Here we want key without branch projectBuilder.setKey(project.key()); // protocol buffers does not accept null values String name = getName(project); if (name != null) { projectBuilder.setName(name); } String description = getDescription(project); if (description != null) { projectBuilder.setDescription(description); } String version = project.getOriginalVersion(); if (version != null) { projectBuilder.setVersion(version); } writeLinks(project, projectBuilder); return projectBuilder; }