Cleanup
This commit is contained in:
parent
b5c9bca463
commit
7b115caf3f
|
@ -38,7 +38,8 @@ class AsmStyleCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.asm_style_check = true;
|
sac.asm_style_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -51,8 +51,6 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import core.vararg;
|
|
||||||
|
|
||||||
void addErrorMessage(size_t line, size_t column, string key, string message)
|
void addErrorMessage(size_t line, size_t column, string key, string message)
|
||||||
{
|
{
|
||||||
_messages.insert(Message(fileName, line, column, key, message));
|
_messages.insert(Message(fileName, line, column, key, message));
|
||||||
|
|
|
@ -91,7 +91,8 @@ private:
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.constructor_check = true;
|
sac.constructor_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -33,7 +33,8 @@ class DeleteCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.delete_check = true;
|
sac.delete_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -156,7 +156,7 @@ class DuplicateAttributeCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.duplicate_attribute = true;
|
sac.duplicate_attribute = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -45,7 +45,8 @@ class FloatOperatorCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.float_operator_check = true;
|
sac.float_operator_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -52,9 +52,8 @@ S after(S)(S value, S separator)
|
||||||
*/
|
*/
|
||||||
void assertAnalyzerWarnings(string code, const StaticAnalysisConfig config, string file=__FILE__, size_t line=__LINE__)
|
void assertAnalyzerWarnings(string code, const StaticAnalysisConfig config, string file=__FILE__, size_t line=__LINE__)
|
||||||
{
|
{
|
||||||
import analysis.run;
|
import analysis.run : ParseAllocator, parseModule;
|
||||||
import std.d.lexer : StringCache;
|
import std.d.lexer : StringCache;
|
||||||
import std.d.parser;
|
|
||||||
|
|
||||||
StringCache cache = StringCache(StringCache.defaultBucketCount);
|
StringCache cache = StringCache(StringCache.defaultBucketCount);
|
||||||
ParseAllocator p = new ParseAllocator;
|
ParseAllocator p = new ParseAllocator;
|
||||||
|
|
|
@ -79,7 +79,8 @@ class IfElseSameCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.if_else_same_check = true;
|
sac.if_else_same_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -59,7 +59,8 @@ class LengthSubtractionCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.length_subtraction_check = true;
|
sac.length_subtraction_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -63,7 +63,8 @@ private:
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import std.stdio;
|
import std.stdio:stderr;
|
||||||
|
|
||||||
LineSpans l;
|
LineSpans l;
|
||||||
l.addLine(5);
|
l.addLine(5);
|
||||||
foreach (i; 2 .. 9)
|
foreach (i; 2 .. 9)
|
||||||
|
|
|
@ -44,7 +44,8 @@ class LogicPrecedenceCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.logical_precedence_check = true;
|
sac.logical_precedence_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -91,7 +91,8 @@ class OpEqualsWithoutToHashCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.opequals_tohash_check = true;
|
sac.opequals_tohash_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -84,7 +84,8 @@ class PokemonExceptionCheck : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.exception_check = true;
|
sac.exception_check = true;
|
||||||
assertAnalyzerWarnings(q{
|
assertAnalyzerWarnings(q{
|
||||||
|
|
|
@ -19,8 +19,13 @@ class BackwardsRangeCheck : BaseAnalyzer
|
||||||
{
|
{
|
||||||
alias visit = BaseAnalyzer.visit;
|
alias visit = BaseAnalyzer.visit;
|
||||||
|
|
||||||
|
/// Key for this check in the report output
|
||||||
enum string KEY = "dscanner.bugs.backwards_slices";
|
enum string KEY = "dscanner.bugs.backwards_slices";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Params:
|
||||||
|
* fileName = the name of the file being analyzed
|
||||||
|
*/
|
||||||
this(string fileName)
|
this(string fileName)
|
||||||
{
|
{
|
||||||
super(fileName);
|
super(fileName);
|
||||||
|
@ -30,7 +35,7 @@ class BackwardsRangeCheck : BaseAnalyzer
|
||||||
{
|
{
|
||||||
if (foreachStatement.low !is null && foreachStatement.high !is null)
|
if (foreachStatement.low !is null && foreachStatement.high !is null)
|
||||||
{
|
{
|
||||||
import std.string;
|
import std.string : format;
|
||||||
state = State.left;
|
state = State.left;
|
||||||
visit(foreachStatement.low);
|
visit(foreachStatement.low);
|
||||||
state = State.right;
|
state = State.right;
|
||||||
|
@ -67,7 +72,7 @@ class BackwardsRangeCheck : BaseAnalyzer
|
||||||
|
|
||||||
override void visit(const PrimaryExpression primary)
|
override void visit(const PrimaryExpression primary)
|
||||||
{
|
{
|
||||||
import std.conv;
|
import std.conv : to, ConvException;
|
||||||
|
|
||||||
if (state == State.ignore || !isNumberLiteral(primary.primary.type))
|
if (state == State.ignore || !isNumberLiteral(primary.primary.type))
|
||||||
return;
|
return;
|
||||||
|
@ -99,7 +104,7 @@ class BackwardsRangeCheck : BaseAnalyzer
|
||||||
state = State.ignore;
|
state = State.ignore;
|
||||||
if (hasLeft && hasRight && left > right)
|
if (hasLeft && hasRight && left > right)
|
||||||
{
|
{
|
||||||
import std.string;
|
import std.string : format;
|
||||||
string message = format(
|
string message = format(
|
||||||
"%d is larger than %d. This slice is likely incorrect.",
|
"%d is larger than %d. This slice is likely incorrect.",
|
||||||
left, right);
|
left, right);
|
||||||
|
|
|
@ -93,7 +93,8 @@ class StyleChecker : BaseAnalyzer
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import analysis.config;
|
import analysis.config : StaticAnalysisConfig;
|
||||||
|
|
||||||
StaticAnalysisConfig sac;
|
StaticAnalysisConfig sac;
|
||||||
sac.style_check = true;
|
sac.style_check = true;
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,10 @@ class UnusedVariableCheck : BaseAnalyzer
|
||||||
{
|
{
|
||||||
alias visit = BaseAnalyzer.visit;
|
alias visit = BaseAnalyzer.visit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Params:
|
||||||
|
* fileName = the name of the file being analyzed
|
||||||
|
*/
|
||||||
this(string fileName)
|
this(string fileName)
|
||||||
{
|
{
|
||||||
super(fileName);
|
super(fileName);
|
||||||
|
@ -54,18 +58,6 @@ class UnusedVariableCheck : BaseAnalyzer
|
||||||
popScope();
|
popScope();
|
||||||
}
|
}
|
||||||
|
|
||||||
// override void visit(const Type type) {}
|
|
||||||
|
|
||||||
mixin template PartsUseVariables(NodeType)
|
|
||||||
{
|
|
||||||
override void visit(const NodeType node)
|
|
||||||
{
|
|
||||||
interestDepth++;
|
|
||||||
node.accept(this);
|
|
||||||
interestDepth--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mixin PartsUseVariables!AliasInitializer;
|
mixin PartsUseVariables!AliasInitializer;
|
||||||
mixin PartsUseVariables!ArgumentList;
|
mixin PartsUseVariables!ArgumentList;
|
||||||
mixin PartsUseVariables!AssertExpression;
|
mixin PartsUseVariables!AssertExpression;
|
||||||
|
@ -327,6 +319,16 @@ class UnusedVariableCheck : BaseAnalyzer
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
mixin template PartsUseVariables(NodeType)
|
||||||
|
{
|
||||||
|
override void visit(const NodeType node)
|
||||||
|
{
|
||||||
|
interestDepth++;
|
||||||
|
node.accept(this);
|
||||||
|
interestDepth--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void variableDeclared(string name, size_t line, size_t column,
|
void variableDeclared(string name, size_t line, size_t column,
|
||||||
bool isParameter, bool isRef)
|
bool isParameter, bool isRef)
|
||||||
{
|
{
|
||||||
|
|
|
@ -378,9 +378,9 @@ options:
|
||||||
programName);
|
programName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doNothing(string, size_t, size_t, string, bool) {}
|
private void doNothing(string, size_t, size_t, string, bool) {}
|
||||||
|
|
||||||
enum CONFIG_FILE_NAME = "dscanner.ini";
|
private enum CONFIG_FILE_NAME = "dscanner.ini";
|
||||||
version(linux) version = useXDG;
|
version(linux) version = useXDG;
|
||||||
version(BSD) version = useXDG;
|
version(BSD) version = useXDG;
|
||||||
version(FreeBSD) version = useXDG;
|
version(FreeBSD) version = useXDG;
|
||||||
|
@ -393,8 +393,7 @@ string getConfigurationLocation()
|
||||||
{
|
{
|
||||||
version (useXDG)
|
version (useXDG)
|
||||||
{
|
{
|
||||||
int x;
|
import std.process : environment;
|
||||||
import std.process;
|
|
||||||
string configDir = environment.get("XDG_CONFIG_HOME", null);
|
string configDir = environment.get("XDG_CONFIG_HOME", null);
|
||||||
if (configDir is null)
|
if (configDir is null)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue