static void validateCoverageMeasure(String value, InputFile inputFile) { Map<Integer, Integer> m = KeyValueFormat.parseIntInt(value); validatePositiveLine(m, inputFile.toString()); validateMaxLine(m, inputFile); }
@Override public String toString() { return wrapped.toString(); } }
@Override public String toString() { return wrapped.toString(); } }
@Override public String toString() { return inputFile().toString(); }
@VisibleForTesting void scanFile(SensorContext context, XmlFile xmlFile, SonarXmlCheck check, RuleKey ruleKey) { try { check.scanFile(context, ruleKey, xmlFile); } catch (Exception e) { LOG.error(String.format("Failed to analyze '%s' with rule %s", xmlFile.getInputFile().toString(), ruleKey), e); } } }
private void collectFileData(String filePath, NodeList nodeList) { InputFile resource = getFile(filePath); LOGGER.info("Collect file data: {}",resource.toString()); if (resource != null) { boolean lineAdded = false; NewCoverage coverage = context.newCoverage(); coverage.onFile(resource); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; int lineId = Integer.parseInt(element.getAttribute(NUMBER)); coverage.lineHits(lineId, Integer.parseInt(element.getAttribute(HITS))); lineAdded = true; String isBranch = element.getAttribute(BRANCH); String text = element.getAttribute(COVERAGE); if ("true".equalsIgnoreCase(isBranch) && text != null && !text.isEmpty()) addCoverageConditions(coverage,lineId,text); } } // If there was no lines covered or uncovered (e.g. everything is ignored), but the file exists then Sonar would report the file as uncovered // so adding a fake one to line number 1 if (!lineAdded) { coverage.lineHits(1, 1); } coverage.save(); } }
public void scanFiles() { for (InputFile pythonFile : inputFiles) { if (context.isCancelled()) { return; } try { scanFile(pythonFile); } catch (Exception e) { LOG.warn("Unable to analyze file '{}'. Error: {}", pythonFile.toString(), e); } } }
static void validateCoverageMeasure(String value, InputFile inputFile) { Map<Integer, Integer> m = KeyValueFormat.parseIntInt(value); validatePositiveLine(m, inputFile.toString()); validateMaxLine(m, inputFile); }
private PlSqlVisitorContext getPlSqlVisitorContext(InputFile inputFile) { PlSqlFile plSqlFile = SonarQubePlSqlFile.create(inputFile); PlSqlVisitorContext visitorContext; try { AstNode root = parser.parse(plSqlFile.content()); visitorContext = new PlSqlVisitorContext(root, plSqlFile, formsMetadata); } catch (RecognitionException e) { visitorContext = new PlSqlVisitorContext(plSqlFile, e, formsMetadata); LOG.error("Unable to parse file: " + inputFile.toString()); LOG.error(e.getMessage()); } catch (Exception e) { checkInterrupted(e); throw new AnalysisException("Unable to analyze file: " + inputFile.toString(), e); } catch (Throwable e) { throw new AnalysisException("Unable to analyze file: " + inputFile.toString(), e); } return visitorContext; }
@Override public void scanFile(XmlFile file) { if (!isFileIncluded(file)) { return; } XPathExpression xPathExpression = getXPathExpression(file); boolean xPathRequiresNamespaces = expression.contains(":"); Document document = xPathRequiresNamespaces ? file.getNamespaceAwareDocument() : file.getNamespaceUnawareDocument(); try { NodeList nodes = (NodeList) xPathExpression.evaluate(document, XPathConstants.NODESET); for (int i = 0; i < nodes.getLength(); i++) { reportIssue(nodes.item(i), message); } } catch (XPathExpressionException nodeSetException) { try { Boolean result = (Boolean) xPathExpression.evaluate(document, XPathConstants.BOOLEAN); if (result) { reportIssueOnFile(message, Collections.emptyList()); } } catch (XPathExpressionException booleanException) { if (LOG.isDebugEnabled()) { LOG.debug(String.format("[%s] Unable to evaluate XPath expression '%s' on file %s", ruleKey(), expression, inputFile().toString())); LOG.error("Xpath exception:", booleanException); } } } }
@Test public void test() throws Exception { when(inputFile.contents()).thenReturn("Input file content"); when(inputFile.filename()).thenReturn("file.php"); when(inputFile.toString()).thenReturn("to string"); when(inputFile.relativePath()).thenReturn("path/to/file.php"); PhpFile phpFile = new PhpFileImpl(inputFile); assertThat(phpFile).isExactlyInstanceOf(PhpFileImpl.class); assertThat(phpFile.contents()).isEqualTo("Input file content"); assertThat(phpFile.filename()).isEqualTo("file.php"); assertThat(phpFile.relativePath()).isEqualTo(Paths.get("path/to/file.php")); assertThat(phpFile.toString()).isEqualTo("to string"); } }
private void processReportDetailed(SensorContext context, Collection<TestSuite> parsedReports) { Map<InputFile, TestResult> locatedResources = lookupResources(parsedReports); for (Map.Entry<InputFile, TestResult> entry : locatedResources.entrySet()) { InputFile inputFile = entry.getKey(); TestResult fileTestResult = entry.getValue(); LOG.debug("Saving test execution measures for '{}'", inputFile.toString()); saveMeasure(context, inputFile, CoreMetrics.SKIPPED_TESTS, fileTestResult.getSkipped()); saveMeasure(context, inputFile, CoreMetrics.TESTS, fileTestResult.getExecutedTests()); saveMeasure(context, inputFile, CoreMetrics.TEST_ERRORS, fileTestResult.getErrors()); saveMeasure(context, inputFile, CoreMetrics.TEST_FAILURES, fileTestResult.getFailures()); saveMeasure(context, inputFile, CoreMetrics.TEST_EXECUTION_TIME, fileTestResult.getTime()); } }
private void processReportDetailed(SensorContext context, Collection<TestSuite> parsedReports) { Map<InputFile, TestResult> locatedResources = lookupResources(parsedReports); for (Map.Entry<InputFile, TestResult> entry : locatedResources.entrySet()) { InputFile inputFile = entry.getKey(); TestResult fileTestResult = entry.getValue(); LOG.debug("Saving test execution measures for '{}'", inputFile.toString()); saveMeasure(context, inputFile, CoreMetrics.SKIPPED_TESTS, fileTestResult.getSkipped()); saveMeasure(context, inputFile, CoreMetrics.TESTS, fileTestResult.getExecutedTests()); saveMeasure(context, inputFile, CoreMetrics.TEST_ERRORS, fileTestResult.getErrors()); saveMeasure(context, inputFile, CoreMetrics.TEST_FAILURES, fileTestResult.getFailures()); saveMeasure(context, inputFile, CoreMetrics.TEST_EXECUTION_TIME, fileTestResult.getTime()); } }
@Override public void execute(SensorContext sensorContext) { File workDir = new File(sensorContext.fileSystem().workDir(), "pylint"); if (!shouldExecute() || !prepareWorkDir(workDir) || !initializeAnalyzer(sensorContext)) { return; } int i = 0; FileSystem fileSystem = sensorContext.fileSystem(); FilePredicates p = fileSystem.predicates(); Iterable<InputFile> files = fileSystem.inputFiles(p.and(p.hasType(InputFile.Type.MAIN), p.hasLanguage(Python.KEY))); for (InputFile file : files) { try { File out = new File(workDir, i + ".out"); analyzeFile(sensorContext, file, out); i++; } catch (Exception e) { LOG.warn("Cannot analyse file '{}', the following exception occurred:", file.toString(), e); } } }
private void scanFile(InputFile inputFile) { PerlFile pythonFile = SonarQubePerlFile.create(inputFile); PerlVisitorContext visitorContext; try { visitorContext = new PerlVisitorContext(parser.parse(pythonFile.content()), pythonFile); } catch (RecognitionException e) { visitorContext = new PerlVisitorContext(pythonFile, e); LOG.error("Unable to parse file: " + inputFile.toString()); LOG.error(e.getMessage()); context.newAnalysisError() .onFile(inputFile) .at(inputFile.newPointer(e.getLine(), 0)) .message(e.getMessage()) .save(); } new PerlHighlighter(context, inputFile).scanFile(visitorContext); }