@Override public boolean apply(InputFile f) { if (path == null) { return false; } return path.equals(f.relativePath()); }
@Override public boolean apply(InputFile f) { return pattern.match(f.path(), Paths.get(f.relativePath())); }
@Override protected void doAdd(InputFile inputFile) { if (inputFile.language() != null) { languages.add(inputFile.language()); } fileMap.put(inputFile.relativePath(), inputFile); filesByNameCache.put(inputFile.filename(), inputFile); filesByExtensionCache.put(FileExtensionPredicate.getExtension(inputFile), inputFile); }
@Test public void returns_true_if_matches() { RelativePathPredicate predicate = new RelativePathPredicate("path"); InputFile inputFile = mock(InputFile.class); when(inputFile.relativePath()).thenReturn("path"); assertThat(predicate.apply(inputFile)).isTrue(); }
@Test public void returns_false_if_doesnt_match() { RelativePathPredicate predicate = new RelativePathPredicate("path1"); InputFile inputFile = mock(InputFile.class); when(inputFile.relativePath()).thenReturn("path2"); assertThat(predicate.apply(inputFile)).isFalse(); } }
@Test public void returns_false_when_path_is_invalid() { RelativePathPredicate predicate = new RelativePathPredicate(".."); InputFile inputFile = mock(InputFile.class); when(inputFile.relativePath()).thenReturn("path"); assertThat(predicate.apply(inputFile)).isFalse(); }
@Override public void execute(SensorContext context) { context.fileSystem().inputFiles(context.fileSystem().predicates().all()).forEach(inputFile -> LOG.info("Global Sensor: {}", inputFile.relativePath())); } }
@Override public void execute(SensorContext context) { context.fileSystem().inputFiles(context.fileSystem().predicates().all()).forEach(inputFile -> LOG.info("Deprecated Global Sensor: {}", inputFile.relativePath())); } }
@Test public void is_file() throws Exception { // relative file assertThat(predicates.is(new File(javaFile.relativePath())).apply(javaFile)).isTrue(); // absolute file assertThat(predicates.is(javaFile.file()).apply(javaFile)).isTrue(); assertThat(predicates.is(javaFile.file().getAbsoluteFile()).apply(javaFile)).isTrue(); assertThat(predicates.is(new File(javaFile.file().toURI())).apply(javaFile)).isTrue(); assertThat(predicates.is(temp.newFile()).apply(javaFile)).isFalse(); }
@Test public void scanProjectWithSourceDir() throws IOException { File srcDir = new File(baseDir, "src"); srcDir.mkdir(); File xooFile = new File(srcDir, "sample.xoo"); FileUtils.write(xooFile, "Sample xoo\ncontent", StandardCharsets.UTF_8); AnalysisResult result = tester.newAnalysis() .properties(builder .put("sonar.sources", "src") .build()) .execute(); assertThat(result.inputFiles()).hasSize(1); assertThat(result.inputFile("src/sample.xoo").type()).isEqualTo(InputFile.Type.MAIN); assertThat(result.inputFile("src/sample.xoo").relativePath()).isEqualTo("src/sample.xoo"); }
@Test public void indexAnyFile() throws IOException { File srcDir = new File(baseDir, "src"); srcDir.mkdir(); File xooFile = new File(srcDir, "sample.xoo"); FileUtils.write(xooFile, "Sample xoo\ncontent"); File otherFile = new File(srcDir, "sample.other"); FileUtils.write(otherFile, "Sample other\ncontent"); AnalysisResult result = tester.newAnalysis() .properties(builder .put("sonar.sources", "src") .build()) .execute(); assertThat(result.inputFiles()).hasSize(2); assertThat(result.inputFile("src/sample.other").type()).isEqualTo(InputFile.Type.MAIN); assertThat(result.inputFile("src/sample.other").relativePath()).isEqualTo("src/sample.other"); assertThat(result.inputFile("src/sample.other").language()).isNull(); }
private static void createIssues(InputFile file, SensorContext context) { RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY); InputDir inputDir = context.fileSystem().inputDir(file.file().getParentFile()); if (inputDir != null) { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(inputDir) .message("This issue is generated for file " + file.relativePath())) .save(); } } }
public void insert(InputFile inputFile, Collection<Block> blocks) { if (settings.isCrossProjectDuplicationEnabled()) { int id = ((DefaultInputFile) inputFile).scannerId(); if (publisher.getWriter().hasComponentData(FileStructure.Domain.CPD_TEXT_BLOCKS, id)) { throw new UnsupportedOperationException("Trying to save CPD tokens twice for the same file is not supported: " + inputFile.absolutePath()); } final ScannerReport.CpdTextBlock.Builder builder = ScannerReport.CpdTextBlock.newBuilder(); publisher.getWriter().writeCpdTextBlocks(id, blocks.stream().map(block -> { builder.clear(); builder.setStartLine(block.getStartLine()); builder.setEndLine(block.getEndLine()); builder.setStartTokenIndex(block.getStartUnit()); builder.setEndTokenIndex(block.getEndUnit()); builder.setHash(block.getBlockHash().toHexString()); return builder.build(); }).collect(Collectors.toList())); } for (Block block : blocks) { mem.insert(block); } if (blocks.isEmpty()) { LOG.debug("Not enough content in '{}' to have CPD blocks, it will not be part of the duplication detection", inputFile.relativePath()); } indexedFiles.add(inputFile); }
@Test public void filesWithDefaultPredicate() { DefaultInputFile file1 = new TestInputFileBuilder("foo", "src/Foo.php").setLanguage("php").build(); fs.add(file1); fs.add(new TestInputFileBuilder("foo", "src/Bar.java").setLanguage("java").build()); fs.add(new TestInputFileBuilder("foo", "src/Baz.java").setLanguage("java").build()); fs.setDefaultPredicate(p -> f -> f.relativePath().endsWith("Foo.php")); Iterator<File> iterator = fs.files(fs.predicates().all()).iterator(); assertThat(iterator.hasNext()).isTrue(); assertThat(iterator.next()).isEqualTo(file1.file()); assertThat(iterator.hasNext()).isFalse(); }
@Override public boolean match(InputFile inputFile, boolean caseSensitiveFileExtension) { String path = inputFile.relativePath(); if (!caseSensitiveFileExtension) { String extension = super.sanitizeExtension(FilenameUtils.getExtension(inputFile.file().getName())); if (StringUtils.isNotBlank(extension)) { path = StringUtils.removeEndIgnoreCase(path, extension); path = path + extension; } } return path != null && pattern.match(path); }
private File getTestResource(InputFile testFile) { File testRes = File.create(testFile.relativePath()); testRes.setQualifier(Qualifiers.UNIT_TEST_FILE); // Reload testRes = sonarIndex.getResource(testRes); if (testRes == null) { throw new IllegalArgumentException("Provided input file is not indexed or not a test file: " + testFile); } return testRes; }
private void storeFs(ProjectScanContainer container) { InputPathCache inputFileCache = container.getComponentByType(InputPathCache.class); for (InputFile inputPath : inputFileCache.allFiles()) { inputFiles.put(inputPath.relativePath(), inputPath); } for (InputDir inputPath : inputFileCache.allDirs()) { inputDirs.put(inputPath.relativePath(), inputPath); } }
private void storeFs(ProjectScanContainer container) { InputPathCache inputFileCache = container.getComponentByType(InputPathCache.class); for (InputFile inputPath : inputFileCache.allFiles()) { inputFiles.put(inputPath.relativePath(), inputPath); } for (InputDir inputPath : inputFileCache.allDirs()) { inputDirs.put(inputPath.relativePath(), inputPath); } }
@Override public FileLinesContext createFor(InputFile inputFile) { File sonarFile = File.create(inputFile.relativePath()); // Reload resource from index sonarFile = index.getResource(sonarFile); return new DefaultFileLinesContext(index, sonarFile); }
@Override protected void doAdd(InputFile inputFile) { if (inputFile.language() != null) { languages.add(inputFile.language()); } fileMap.put(inputFile.relativePath(), inputFile); filesByNameCache.put(inputFile.filename(), inputFile); filesByExtensionCache.put(FileExtensionPredicate.getExtension(inputFile), inputFile); }