diff --git a/analysis/numbers.d b/analysis/numbers.d index da483c1..e6fb426 100644 --- a/analysis/numbers.d +++ b/analysis/numbers.d @@ -34,6 +34,6 @@ class NumberStyleCheck : BaseAnalyzer } } - auto badBinaryRegex = ctRegex!(`0b[01]{9,}`); - auto badDecimalRegex = ctRegex!(`\d{5,}`); + auto badBinaryRegex = ctRegex!(`^0b[01]{9,}`); + auto badDecimalRegex = ctRegex!(`^\d{5,}`); } diff --git a/analysis/unused.d b/analysis/unused.d index 57a2c79..faa73b8 100644 --- a/analysis/unused.d +++ b/analysis/unused.d @@ -39,45 +39,36 @@ class UnusedVariableCheck : BaseAnalyzer override void visit(const FunctionDeclaration functionDec) { - if (functionDec.functionBody is null) + pushScope(); + if (isOverride) + functionDec.functionBody.accept(this); + else if (functionDec.functionBody !is null) { - functionDec.accept(this); + functionDec.parameters.accept(this); + functionDec.functionBody.accept(this); } - else if (!isOverride) + popScope(); + } + + mixin template PartsUseVariables(NodeType) + { + override void visit(const NodeType node) { - pushScope(); - functionDec.accept(this); - popScope(); + interestDepth++; + node.accept(this); + interestDepth--; } } - override void visit(const AssertExpression assertExpression) - { - interestDepth++; - assertExpression.accept(this); - interestDepth--; - } - - override void visit(const FunctionCallExpression functionCallExpression) - { - interestDepth++; - functionCallExpression.accept(this); - interestDepth--; - } - - override void visit(const NewExpression newExpression) - { - interestDepth++; - newExpression.accept(this); - interestDepth--; - } - - override void visit(const TemplateArgumentList argumentList) - { - interestDepth++; - argumentList.accept(this); - interestDepth--; - } + mixin PartsUseVariables!AssertExpression; + mixin PartsUseVariables!FunctionCallExpression; + mixin PartsUseVariables!NewExpression; + mixin PartsUseVariables!TemplateArgumentList; + mixin PartsUseVariables!MixinExpression; + mixin PartsUseVariables!ArgumentList; + mixin PartsUseVariables!Initializer; + mixin PartsUseVariables!SliceExpression; + mixin PartsUseVariables!StaticIfCondition; override void visit(const SwitchStatement switchStatement) { @@ -138,8 +129,6 @@ class UnusedVariableCheck : BaseAnalyzer ifStatement.elseStatement.accept(this); } - override void visit(const TypeofExpression typeofExpression) {} - override void visit(const ForeachStatement foreachStatement) { if (foreachStatement.low !is null) @@ -157,20 +146,6 @@ class UnusedVariableCheck : BaseAnalyzer foreachStatement.accept(this); } - override void visit(const ArgumentList argumentList) - { - interestDepth++; - argumentList.accept(this); - interestDepth--; - } - - override void visit(const Initializer initializer) - { - interestDepth++; - initializer.accept(this); - interestDepth--; - } - override void visit(const AssignExpression assignExp) { assignExp.ternaryExpression.accept(this); @@ -184,7 +159,6 @@ class UnusedVariableCheck : BaseAnalyzer override void visit(const TemplateDeclaration templateDeclaration) { - bool addScope = templateDeclaration.declarations.length > 0; auto inAgg = inAggregateScope; inAggregateScope = true; templateDeclaration.accept(this); @@ -243,13 +217,6 @@ class UnusedVariableCheck : BaseAnalyzer variableDeclaration.accept(this); } - override void visit(const SliceExpression sliceExpression) - { - interestDepth++; - sliceExpression.accept(this); - interestDepth--; - } - override void visit(const AutoDeclaration autoDeclaration) { foreach (t; autoDeclaration.identifiers) @@ -257,6 +224,14 @@ class UnusedVariableCheck : BaseAnalyzer autoDeclaration.accept(this); } + override void visit(const WithStatement withStatetement) + { + interestDepth++; + withStatetement.expression.accept(this); + interestDepth--; + withStatetement.statementNoCaseNoDefault.accept(this); + } + override void visit(const Parameter parameter) { import std.algorithm; @@ -268,6 +243,12 @@ class UnusedVariableCheck : BaseAnalyzer variableDeclared(parameter.name.text, parameter.name.line, parameter.name.column, true, canFind(parameter.parameterAttributes, cast(IdType) tok!"ref")); + if (parameter.default_ !is null) + { + interestDepth++; + parameter.default_.accept(this); + interestDepth--; + } } }