Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var NoConsoleRule = rule.Rule{ Name: "no-console", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { opts := parseOptions(options) reportIfConsole := func(node *ast.Node, consoleIdent *ast.Node, propertyName string) { if opts.isAllowed(propertyName) { return } if ctx.TypeChecker != nil { symbol := ctx.TypeChecker.GetSymbolAtLocation(consoleIdent) if symbol != nil { for _, declaration := range symbol.Declarations { declarationSourceFile := ast.GetSourceFileOfNode(declaration) if declarationSourceFile != nil && declarationSourceFile == ctx.SourceFile { return } } } } ctx.ReportNode(node, rule.RuleMessage{ Id: "unexpected", Description: "Unexpected console statement.", }) } return rule.RuleListeners{ ast.KindPropertyAccessExpression: func(node *ast.Node) { propAccess := node.AsPropertyAccessExpression() if propAccess == nil { return } if propAccess.Expression.Kind != ast.KindIdentifier { return } objectName := propAccess.Expression.AsIdentifier().Text if objectName != "console" { return } propertyName := propAccess.Name().Text() reportIfConsole(node, propAccess.Expression, propertyName) }, ast.KindElementAccessExpression: func(node *ast.Node) { elemAccess := node.AsElementAccessExpression() if elemAccess == nil { return } if elemAccess.Expression.Kind != ast.KindIdentifier { return } objectName := elemAccess.Expression.AsIdentifier().Text if objectName != "console" { return } // Try to get static property name for allow-list check. // Dynamic access (e.g., console[foo]) is always reported since // we can't prove it's in the allow list. var propertyName string if elemAccess.ArgumentExpression != nil { switch elemAccess.ArgumentExpression.Kind { case ast.KindStringLiteral: propertyName = elemAccess.ArgumentExpression.AsStringLiteral().Text case ast.KindNoSubstitutionTemplateLiteral: propertyName = elemAccess.ArgumentExpression.AsNoSubstitutionTemplateLiteral().Text } } reportIfConsole(node, elemAccess.Expression, propertyName) }, } }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.