public FileMeasures computeMeasures(FileLinesContext fileLinesContext) { return new MetricsVisitor().getFileMeasures(currentFile, currentFileTree, fileLinesContext); }
@Override public List<Kind> nodesToVisit() { List<Kind> result = new ArrayList<>(Arrays.asList(MetricsVisitor.getFunctionNodes())); result.addAll(Arrays.asList(STATEMENT_NODES)); result.addAll(Arrays.asList(MetricsVisitor.getClassNodes())); return result; }
public FileMeasures getFileMeasures( PhpFile file, CompilationUnitTree tree, FileLinesContext fileLinesContext ) { this.fileMeasures = new FileMeasures(LIMITS_COMPLEXITY_FUNCTIONS, FILES_DISTRIBUTION_BOTTOM_LIMITS); this.fileLinesContext = fileLinesContext; super.analyze(file, tree); setCounterMeasures(); setLineAndCommentMeasures(); return this.fileMeasures; }
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 FileMeasures computeMeasures(FileLinesContext fileLinesContext) { return new MetricsVisitor().getFileMeasures(currentFile, currentFileTree, fileLinesContext); }
@Override public List<Kind> nodesToVisit() { List<Kind> result = new ArrayList<>(Arrays.asList(MetricsVisitor.getFunctionNodes())); result.addAll(Arrays.asList(STATEMENT_NODES)); result.addAll(Arrays.asList(MetricsVisitor.getClassNodes())); return result; }
public FileMeasures getFileMeasures( PhpFile file, CompilationUnitTree tree, FileLinesContext fileLinesContext ) { this.fileMeasures = new FileMeasures(LIMITS_COMPLEXITY_FUNCTIONS, FILES_DISTRIBUTION_BOTTOM_LIMITS); this.fileLinesContext = fileLinesContext; super.analyze(file, tree); setCounterMeasures(); setLineAndCommentMeasures(); return this.fileMeasures; }
private void setCounterMeasures() { CounterVisitor counter = new CounterVisitor(context().tree()); fileMeasures.setClassNumber(counter.getClassNumber()); fileMeasures.setFunctionNumber(counter.getFunctionNumber()); fileMeasures.setStatementNumber(counter.getStatementNumber()); }
@Test public void test() { String filename = "metrics/lines_of_code.php"; PhpFile file = FileTestUtils.getFile(new File("src/test/resources/"+filename)); FileLinesContext fileLinesContext = mock(FileLinesContext.class); FileMeasures fileMeasures = new MetricsVisitor().getFileMeasures(file, parse(filename), fileLinesContext); assertThat(fileMeasures.getFileComplexity()).isEqualTo(1); assertThat(fileMeasures.getFileCognitiveComplexity()).isEqualTo(0); assertThat(fileMeasures.getClassComplexity()).isEqualTo(1); assertThat(fileMeasures.getFunctionComplexity()).isEqualTo(1); assertThat(fileMeasures.getFileComplexityDistribution().build()).isEqualTo("0=1;5=0;10=0;20=0;30=0;60=0;90=0"); assertThat(fileMeasures.getFunctionComplexityDistribution().build()).isEqualTo("1=1;2=0;4=0;6=0;8=0;10=0;12=0"); assertThat(fileMeasures.getFunctionNumber()).isEqualTo(1); assertThat(fileMeasures.getStatementNumber()).isEqualTo(2); assertThat(fileMeasures.getClassNumber()).isEqualTo(1); assertThat(fileMeasures.getLinesOfCodeNumber()).isEqualTo(7); assertThat(fileMeasures.getCommentLinesNumber()).isEqualTo(5); verify(fileLinesContext).setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, 21, 1); }
@Override public void visitNode(Tree tree) { if (tree.is(MetricsVisitor.getFunctionNodes())) { functionCounter++; } else if (tree.is(STATEMENT_NODES)) { statementCounter++; } else if (tree.is(MetricsVisitor.getClassNodes())) { classCounter++; } }
private void setCounterMeasures() { CounterVisitor counter = new CounterVisitor(context().tree()); fileMeasures.setClassNumber(counter.getClassNumber()); fileMeasures.setFunctionNumber(counter.getFunctionNumber()); fileMeasures.setStatementNumber(counter.getStatementNumber()); }
@Override public void visitNode(Tree tree) { if (tree.is(MetricsVisitor.getFunctionNodes())) { functionCounter++; } else if (tree.is(STATEMENT_NODES)) { statementCounter++; } else if (tree.is(MetricsVisitor.getClassNodes())) { classCounter++; } }