builder.withSquidAstVisitor(CommentsVisitor.<LexerlessGrammar>builder().withCommentMetric( CssMetric.COMMENT_LINES) .withNoSonar(true) builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder() .setMetricDef(CssMetric.STATEMENTS) .subscribeTo(CssGrammar.AT_KEYWORD, CssGrammar.SELECTOR, CssGrammar.DECLARATION) builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder() .setMetricDef(CssMetric.RULE_SETS) .subscribeTo(CssGrammar.RULESET) builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder() .setMetricDef(CssMetric.AT_RULES) .subscribeTo(CssGrammar.AT_RULE) builder.withSquidAstVisitor(new LinesVisitor<LexerlessGrammar>(CssMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<LexerlessGrammar>(CssMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(new SyntaxHighlighterVisitor(sonarComponents, conf.charset())); builder.withSquidAstVisitor(visitor);
builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>( new SourceCodeBuilderCallback() { @Override builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder().setMetricDef( ErlangMetric.MODULES).subscribeTo(ErlangGrammarImpl.module).build()); builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>( new SourceCodeBuilderCallback() { @Override builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder().setMetricDef( ErlangMetric.FUNCTIONS).subscribeTo(ErlangGrammarImpl.functionDeclaration).build()); builder.withSquidAstVisitor(new LinesVisitor<LexerlessGrammar>(ErlangMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<LexerlessGrammar>( ErlangMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<LexerlessGrammar>builder().withCommentMetric( ErlangMetric.COMMENT_LINES) .withNoSonar(true) builder.withSquidAstVisitor(new ErlangStatementVisitor()); builder.withSquidAstVisitor(new ErlangComplexityVisitor()); builder.withSquidAstVisitor(new PublicDocumentedApiCounter()); builder.withSquidAstVisitor(new NumberOfFunctionArgument());
builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>(new SourceCodeBuilderCallback() { private int seq = 0; builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder().setMetricDef(EcmaScriptMetric.CLASSES) .subscribeTo(Kind.CLASS_DECLARATION, Kind.CLASS_EXPRESSION) .build()); builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar> builder() .setMetricDef(EcmaScriptMetric.FUNCTIONS) .subscribeTo(FUNCTION_NODES) .build()); builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>(new SourceCodeBuilderCallback() { @Override public SourceCode createSourceCode(SourceCode parentSourceCode, AstNode astNode) { builder.withSquidAstVisitor(new LinesVisitor<LexerlessGrammar>(EcmaScriptMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor(EcmaScriptMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<LexerlessGrammar> builder().withCommentMetric(EcmaScriptMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments()) .build()); builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar> builder() .setMetricDef(EcmaScriptMetric.STATEMENTS) .subscribeTo( builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar>builder() .setMetricDef(EcmaScriptMetric.ACCESSORS) .subscribeTo(
builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>(new PackageSourceCodeBuilderCallback(), FlexGrammar.PACKAGE_DEF)); builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>(new SourceCodeBuilderCallback() { private int seq = 0; @Override builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar> builder() .setMetricDef(FlexMetric.CLASSES) .subscribeTo(FlexGrammar.CLASS_DEF, FlexGrammar.INTERFACE_DEF) builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<LexerlessGrammar>(new SourceCodeBuilderCallback() { private int seq = 0; builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar> builder() .setMetricDef(FlexMetric.FUNCTIONS) .subscribeTo(FlexGrammar.FUNCTION_DEF, FlexGrammar.FUNCTION_EXPR) builder.withSquidAstVisitor(new LinesVisitor<LexerlessGrammar>(FlexMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<LexerlessGrammar>(FlexMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<LexerlessGrammar> builder().withCommentMetric(FlexMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments()) .build()); builder.withSquidAstVisitor(CounterVisitor.<LexerlessGrammar> builder() .setMetricDef(FlexMetric.STATEMENTS) .subscribeTo( builder.withSquidAstVisitor(new ComplexityVisitor());
builder.withSquidAstVisitor(new CSharpTypeVisitor()); builder.withSquidAstVisitor(new CSharpMemberVisitor()); builder.withSquidAstVisitor(new LinesVisitor<Grammar>(CSharpMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<Grammar>(CSharpMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<Grammar>builder() .withCommentMetric(CSharpMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments()) .build()); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(CSharpMetric.STATEMENTS) .subscribeTo( CSharpGrammar.YIELD_STATEMENT) .build()); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(CSharpMetric.ACCESSORS) .subscribeTo( builder.withSquidAstVisitor(new CSharpComplexityVisitor()); builder.withSquidAstVisitor(new CSharpPublicApiVisitor()); ((CharsetAwareVisitor) visitor).setCharset(conf.getCharset()); builder.withSquidAstVisitor(visitor);
if(visitors != null && visitors.length > 0) { for (SquidAstVisitor<SwiftGrammar> sv : visitors) { builder.withSquidAstVisitor(sv); builder.withSquidAstVisitor(new LinesVisitor(SwiftMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor(SwiftMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<SwiftGrammar>builder().withCommentMetric(SwiftMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments())
if(visitors != null && visitors.length > 0) { for (SquidAstVisitor<ObjectiveCGrammar> sv : visitors) { builder.withSquidAstVisitor(sv); builder.withSquidAstVisitor(new LinesVisitor(ObjectiveCMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor(ObjectiveCMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<ObjectiveCGrammar>builder().withCommentMetric(ObjectiveCMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments())
/** * Sets the default apex metrics in {@link AstScanner}. * * @param config apex configuration. * @param builder scanner builder. */ private static void setMetrics(ApexConfiguration config, AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new LinesVisitor<>(ApexMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<>(ApexMetric.LINES_OF_CODE)); AstNodeType[] complexityAstNodeType = new AstNodeType[]{ METHOD_DECLARATION, WHILE_STATEMENT, FOR_STATEMENT, IF_STATEMENT, RETURN_STATEMENT }; builder.withSquidAstVisitor(ComplexityVisitor.<Grammar>builder() .setMetricDef(ApexMetric.COMPLEXITY) .subscribeTo(complexityAstNodeType) .build()); builder.withSquidAstVisitor(CommentsVisitor.<Grammar>builder() .withCommentMetric(ApexMetric.COMMENT_LINES) .withNoSonar(Boolean.TRUE) .withIgnoreHeaderComment(config.getIgnoreHeaderComments()) .build()); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(ApexMetric.STATEMENTS) .subscribeTo(STATEMENT) .build()); }
private static void setMetrics(PythonConfiguration conf, AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new LinesVisitor<Grammar>(PythonMetric.LINES)); builder.withSquidAstVisitor(new PythonLinesOfCodeVisitor<Grammar>(PythonMetric.LINES_OF_CODE)); AstNodeType[] complexityAstNodeType = new AstNodeType[]{ PythonKeyword.OR }; builder.withSquidAstVisitor(ComplexityVisitor.<Grammar>builder() .setMetricDef(PythonMetric.COMPLEXITY) .subscribeTo(complexityAstNodeType) .build()); builder.withSquidAstVisitor(CommentsVisitor.<Grammar>builder().withCommentMetric(PythonMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments()) .build()); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(PythonMetric.STATEMENTS) .subscribeTo(PythonGrammar.STATEMENT)
builder.withSquidAstVisitor(new LinesVisitor<ObjectiveCGrammar>(ObjectiveCMetric.LINES)); builder.withSquidAstVisitor(new LinesOfCodeVisitor<ObjectiveCGrammar>(ObjectiveCMetric.LINES_OF_CODE)); builder.withSquidAstVisitor(CommentsVisitor.<ObjectiveCGrammar> builder().withCommentMetric(ObjectiveCMetric.COMMENT_LINES) .withNoSonar(true) .withIgnoreHeaderComment(conf.getIgnoreHeaderComments())
/** * Returns a scanner from configuration and visitors. * * @param config apex configuration. * @param visitors list of visitors. * @return a scanner. */ public static AstScanner<Grammar> create(ApexConfiguration config, SquidAstVisitor<Grammar>... visitors) { final SourceProject sourceProject = new SourceProject(PROJECT_NAME); final SquidAstVisitorContextImpl<Grammar> context = new SquidAstVisitorContextImpl<>(sourceProject); final Parser<Grammar> parser = ApexParser.create(config); AstScanner.Builder<Grammar> builder = AstScanner.<Grammar>builder(context).setBaseParser(parser); builder.withMetrics(ApexMetric.values()); builder.setFilesMetric(ApexMetric.FILES); setCommentAnalyser(builder); setClassesAnalyser(builder); setMethodAnalyser(builder); setMetrics(config, builder); for (SquidAstVisitor<Grammar> visitor : visitors) { builder.withSquidAstVisitor(visitor); } return builder.build(); }
public static AstScanner<Grammar> create(PythonConfiguration conf, SquidAstVisitor<Grammar>... visitors) { final SquidAstVisitorContextImpl<Grammar> context = new SquidAstVisitorContextImpl<Grammar>(new SourceProject("Python Project")); final Parser<Grammar> parser = PythonParser.create(conf); AstScanner.Builder<Grammar> builder = AstScanner.<Grammar>builder(context).setBaseParser(parser); builder.withMetrics(PythonMetric.values()); builder.setFilesMetric(PythonMetric.FILES); setCommentAnalyser(builder); setClassesAnalyser(builder); setMethodAnalyser(builder); setMetrics(conf, builder); /* External visitors (typically Check ones) */ for (SquidAstVisitor<Grammar> visitor : visitors) { if (visitor instanceof CharsetAwareVisitor) { ((CharsetAwareVisitor) visitor).setCharset(conf.getCharset()); } builder.withSquidAstVisitor(visitor); } return builder.build(); }
private static void setClassesAnalyser(AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<Grammar>(new SourceCodeBuilderCallback() { @Override public SourceCode createSourceCode(SourceCode parentSourceCode, AstNode astNode) { String functionName = astNode.getFirstChild(PythonGrammar.CLASSNAME).getFirstChild().getTokenValue(); SourceClass function = new SourceClass(functionName + ":" + astNode.getToken().getLine()); function.setStartAtLine(astNode.getTokenLine()); return function; } }, PythonGrammar.CLASSDEF)); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(PythonMetric.CLASSES) .subscribeTo(PythonGrammar.CLASSDEF) .build()); }
private static void setMethodAnalyser(AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<Grammar>(new SourceCodeBuilderCallback() { @Override public SourceCode createSourceCode(SourceCode parentSourceCode, AstNode astNode) { String functionName = astNode.getFirstChild(PythonGrammar.FUNCNAME).getFirstChild().getTokenValue(); SourceFunction function = new SourceFunction(functionName + ":" + astNode.getToken().getLine()); function.setStartAtLine(astNode.getTokenLine()); return function; } }, PythonGrammar.FUNCDEF)); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(PythonMetric.FUNCTIONS) .subscribeTo(PythonGrammar.FUNCDEF) .build()); }
/** * Sets the default visitors to mapping a class. * * @param builder scanner builder. */ private static void setClassesAnalyser(AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<>( buildCallback(COMMON_IDENTIFIER, !IS_CLASS), CLASS_OR_INTERFACE_DECLARATION)); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(ApexMetric.CLASSES) .subscribeTo(CLASS_OR_INTERFACE_DECLARATION) .build()); }
/** * Sets the default visitors to mapping a method. * * @param builder scanner builder. */ private static void setMethodAnalyser(AstScanner.Builder<Grammar> builder) { builder.withSquidAstVisitor(new SourceCodeBuilderVisitor<>( buildCallback(METHOD_IDENTIFIER, IS_CLASS), METHOD_DECLARATION)); builder.withSquidAstVisitor(CounterVisitor.<Grammar>builder() .setMetricDef(ApexMetric.METHODS) .subscribeTo(METHOD_DECLARATION) .build()); }
@Override public AstScanner<G> build() { super.withSquidAstVisitor(new SquidAstVisitor<G>() { @Override public void leaveFile(@Nullable AstNode astNode) { progressReport.nextFile(); } }); return new ProgressAstScanner<G>(this); }
@Override public AstScanner<LexerlessGrammar> build() { super.withSquidAstVisitor(new SquidAstVisitor<LexerlessGrammar>() { @Override public void visitFile(@Nullable AstNode astNode) { progressReport.nextFile(getContext().getFile()); } }); return new ProgressAstScanner(this); }
@Override public AstScanner<Grammar> build() { super.withSquidAstVisitor(new SquidAstVisitor<Grammar>() { @Override public void visitFile(@Nullable AstNode astNode) { progressReport.nextFile(getContext().getFile()); } }); return new ProgressAstScanner(this); }