public static SolutionAnalysis Analyze(SolutionImplementation solution) { if (solution.IsEquivalentTo(AddSecondsWithScientificNotation)) { return(solution.ApproveAsOptimal()); } if (solution.IsEquivalentTo(AddSecondsWithMathPow)) { return(solution.ApproveWithComment("Use 1e9 instead of Math.Pow(10, 9)")); } if (solution.IsEquivalentTo(AddSecondsWithDigitsWithoutSeparator)) { return(solution.ApproveWithComment("Use 1e9 or 1_000_000 instead of 1000000")); } if (solution.IsEquivalentTo(AddSecondsWithScientificNotationInBlockBody)) { return(solution.ApproveWithComment("You could write the method an an expression-bodied member")); } if (solution.IsEquivalentTo(Add)) { return(solution.DisapproveWithComment("Use AddSeconds")); } if (solution.IsEquivalentTo(PlusOperator)) { return(solution.DisapproveWithComment("Use AddSeconds")); } return(solution.ReferToMentor()); }
private static bool UsesTooManyChecks(this SolutionImplementation solution) { const int minimalNumberOfChecks = 3; var addMethod = solution.Implementation.SyntaxNode .GetClass("Leap") .GetMethod("IsLeapYear"); return(addMethod .DescendantNodes() .OfType <BinaryExpressionSyntax>() .Count(BinaryExpressionUsesYearParameter) > minimalNumberOfChecks); bool BinaryExpressionUsesYearParameter(BinaryExpressionSyntax binaryExpression) => ExpressionUsesYearParameter(binaryExpression.Left) || ExpressionUsesYearParameter(binaryExpression.Right); bool ExpressionUsesYearParameter(ExpressionSyntax expression) => expression is IdentifierNameSyntax nameSyntax && nameSyntax.Identifier.Text == "year"; }
public static SolutionAnalysis Analyze(SolutionImplementation solution) { if (solution.IsEquivalentTo(MinimumNumberOfChecks)) { return(solution.ApproveAsOptimal()); } if (solution.IsEquivalentTo(UnneededParentheses)) { return(solution.ApproveAsOptimal()); } if (solution.IsEquivalentTo(MethodWithBlockBody)) { return(solution.ApproveWithComment("You could write the method an an expression-bodied member")); } if (solution.UsesTooManyChecks()) { return(solution.DisapproveWithComment("Use minimum number of checks")); } return(solution.ReferToMentor()); }
public static SolutionAnalysis Analyze(SolutionImplementation solution) => solution.ReferToMentor();
public DteImplementation([NotNull] DteProtocolModel dteProtocolModel) { DteProtocolModel = dteProtocolModel; Solution = new SolutionImplementation(this); }