private void saveMeasure(FileLinesContext context, String metricKey, Map<Integer, Integer> values) { for (Map.Entry<Integer, Integer> entry : values.entrySet()) { context.setIntValue(metricKey, entry.getKey(), entry.getValue()); } }
private static void saveLinesMetrics(FileLinesContext linesContext, Set<Integer> lines, String metricKey) { lines.forEach(line -> linesContext.setIntValue(metricKey, line, 1)); }
private void saveMeasure(FileLinesContext context, String metricKey, Map<Integer, Integer> values) { for (Map.Entry<Integer, Integer> entry : values.entrySet()) { context.setIntValue(metricKey, entry.getKey(), entry.getValue()); } }
@Override public void leaveFile(AstNode astNode) { int fileLength = getContext().peekSourceCode().getInt(CSharpMetric.LINES); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
@Override public void scanFile(JavaFileScannerContext context) { super.scanFile(context); File currentFile = context.getFile(); FileLinesContext fileLinesContext = sonarComponents.fileLinesContextFor(currentFile); int fileLength = sonarComponents.fileLength(currentFile); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, executableLines.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); executableLines.clear(); }
@Override public void scanFile(JavaFileScannerContext context) { super.scanFile(context); File currentFile = context.getFile(); FileLinesContext fileLinesContext = sonarComponents.fileLinesContextFor(currentFile); int fileLength = sonarComponents.fileLength(currentFile); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, executableLines.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); executableLines.clear(); }
@Override public void leaveFile(AstNode astNode) { FileLinesContext fileLinesContext = sonarComponents.fileLinesContextFor(getContext().getFile()); // TODO minimize access to files, another one in LinesVisitor int fileLength; try { fileLength = Files.readLines(getContext().getFile(), charset).size(); } catch (IOException e) { throw Throwables.propagate(e); } for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
@Override public void leaveFile(AstNode astNode) { File sonarFile = File.fromIOFile(getContext().getFile(), project); FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(sonarFile); int fileLength = getContext().peekSourceCode().getInt(FlexMetric.LINES); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
private void saveLineLevelMeasures(File sonarFile, WebSourceCode webSourceCode) { FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(sonarFile); Set<Integer> linesOfCode = webSourceCode.getDetailedLinesOfCode(); Set<Integer> linesOfComments = webSourceCode.getDetailedLinesOfComments(); for (int line = 1; line <= webSourceCode.getMeasure(CoreMetrics.LINES).getIntValue(); line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); }
@Override public void leaveFile(AstNode astNode) { File sonarFile = File.fromIOFile(getContext().getFile(), project); FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(sonarFile); int fileLength = getContext().peekSourceCode().getInt(CssMetric.LINES); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
private void saveLineLevelMeasures(InputFile inputFile, HtmlSourceCode htmlSourceCode) { FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(inputFile); for (Integer line : htmlSourceCode.getDetailedLinesOfCode()) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1); } fileLinesContext.save(); }
public static void saveLineLevelMeasures(InputFile inputFile, HtmlSourceCode htmlSourceCode, FileLinesContextFactory fileLinesContextFactory) { FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(inputFile); final int lineContainsCode = 1; for (Integer line : htmlSourceCode.getDetailedLinesOfCode()) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, lineContainsCode); } fileLinesContext.save(); }
/** * Saves the measures of the passed YAML file: lines of code and comments * * @param yamlFile the YAML file being analyzed * @param data the {@code LineCountData} describing this YAML file * @param fileLinesContext {@code FileLinesContext} used to save the code lines and comments of the YAML file * @param context the {@code SensorContext} */ private static void saveMeasures(InputFile yamlFile, LineCountData data, FileLinesContext fileLinesContext, SensorContext context) { for (int line = 1; line <= data.linesNumber(); line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, data.linesOfCodeLines().contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, data.effectiveCommentLines().contains(line) ? 1 : 0); } fileLinesContext.save(); saveMeasure(context, yamlFile, CoreMetrics.COMMENT_LINES, data.effectiveCommentLines().size()); saveMeasure(context, yamlFile, CoreMetrics.NCLOC, data.linesOfCodeLines().size()); }
@Override public void leaveFile(AstNode astNode) { InputFile inputFile = fileSystem.inputFile(fileSystem.predicates().is(getContext().getFile())); if (inputFile == null){ throw new IllegalStateException("InputFile is null, but it should not be."); } FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(inputFile); int fileLength = getContext().peekSourceCode().getInt(PythonMetric.LINES); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
@Override public void leaveFile(AstNode astNode) { FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(File.create(pathResolver.relativePath(fileSystem.baseDir(), getContext().getFile().getAbsoluteFile()))); if (fileLinesContext != null) { int fileLength = getContext().peekSourceCode().getInt(EcmaScriptMetric.LINES); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); } else { LOG.warn("Cannot save measures for DevCockpit for file {}. Unable to retrieve the associated sonar resource.", getContext().getFile().getName()); } linesOfCode.clear(); linesOfComments.clear(); }
private void handleToken(Token token, int nextTokenLine, List<String> lines) { int tokenType = token.getType(); int tokenLine = token.getLine(); if (isComment(tokenType)) { if (isNotHeaderComment(tokenLine)) { comments += nextTokenLine - tokenLine + 1 - numberEmptyLines(token, lines); } for (int commentLineNb = tokenLine; commentLineNb <= nextTokenLine; commentLineNb++) { fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, commentLineNb, 1); } } else if (isNotWhitespace(tokenType) && tokenLine != currentLine) { loc++; fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, tokenLine, 1); currentLine = tokenLine; } }
private void saveMetrics(SensorContext sensorContext, SensorContextUtils.AnalysisResponse analysisResponse, InputFile inputFile) { saveMetric(sensorContext, inputFile, CoreMetrics.FUNCTIONS, analysisResponse.functions); saveMetric(sensorContext, inputFile, CoreMetrics.CLASSES, analysisResponse.classes); saveMetric(sensorContext, inputFile, CoreMetrics.STATEMENTS, analysisResponse.statements); saveMetric(sensorContext, inputFile, CoreMetrics.NCLOC, analysisResponse.ncloc.length); saveMetric(sensorContext, inputFile, CoreMetrics.COMMENT_LINES, analysisResponse.commentLines.length); saveMetric(sensorContext, inputFile, CoreMetrics.COMPLEXITY, analysisResponse.complexity); saveMetric(sensorContext, inputFile, CoreMetrics.COGNITIVE_COMPLEXITY, analysisResponse.cognitiveComplexity); noSonarFilter.noSonarInFile(inputFile, Arrays.stream(analysisResponse.nosonarLines).collect(Collectors.toSet())); FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(inputFile); for (int line : analysisResponse.ncloc) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1); } for (int line : analysisResponse.executableLines) { fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, 1); } fileLinesContext.save(); }
private void setLineAndCommentMeasures() { LineVisitor lineVisitor = new LineVisitor(context().tree()); ExecutableLineVisitor executableLineVisitor = new ExecutableLineVisitor(context().tree()); CommentLineVisitor commentVisitor = new CommentLineVisitor(context().tree()); fileMeasures.setLinesOfCodeNumber(lineVisitor.getLinesOfCodeNumber()); fileMeasures.setCommentLinesNumber(commentVisitor.commentLineNumber()); Set<Integer> linesOfCode = lineVisitor.getLinesOfCode(); linesOfCode.forEach(lineOfCode -> fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, lineOfCode, 1)); executableLineVisitor.getExecutableLines().forEach(line -> fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, 1)); fileLinesContext.save(); }
private void setLineAndCommentMeasures() { LineVisitor lineVisitor = new LineVisitor(context().tree()); ExecutableLineVisitor executableLineVisitor = new ExecutableLineVisitor(context().tree()); CommentLineVisitor commentVisitor = new CommentLineVisitor(context().tree()); fileMeasures.setLinesOfCodeNumber(lineVisitor.getLinesOfCodeNumber()); fileMeasures.setCommentLinesNumber(commentVisitor.commentLineNumber()); Set<Integer> linesOfCode = lineVisitor.getLinesOfCode(); linesOfCode.forEach(lineOfCode -> fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, lineOfCode, 1)); executableLineVisitor.getExecutableLines().forEach(line -> fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, 1)); fileLinesContext.save(); }
public static void analyse(SensorContext context, FileLinesContextFactory fileLinesContextFactory, XmlFile xmlFile) { LOG.debug("Count lines in {}", xmlFile.getInputFile().uri()); Set<Integer> linesOfCode = new HashSet<>(); Set<Integer> commentLines = new HashSet<>(); Document document = xmlFile.getDocument(); visitNode(document, linesOfCode, commentLines); xmlFile.getPrologElement().ifPresent(prologElement -> addLinesRange( linesOfCode, prologElement.getPrologStartLocation().getStartLine(), prologElement.getPrologEndLocation().getEndLine())); FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(xmlFile.getInputFile()); linesOfCode.forEach(lineOfCode -> fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, lineOfCode, 1)); fileLinesContext.save(); saveMeasure(context, xmlFile.getInputFile(), CoreMetrics.COMMENT_LINES, commentLines.size()); saveMeasure(context, xmlFile.getInputFile(), CoreMetrics.NCLOC, linesOfCode.size()); }