private bool AnalyzeValuesAttribute(IRegularParameterDeclaration parameterDeclaration, IHighlightingConsumer consumer)
        {
            var parameterHasAnyDataSource = false;

            foreach (var attribute in parameterDeclaration.AttributesEnumerable)
            {
                if (attribute.IsAttributeOrDerivedFrom(ParameterizedTests.ParameterDataSourceInterface,
                                                       // NUnit 2 support:
                                                       ParameterizedTests.ValueSourceAttribute))
                {
                    parameterHasAnyDataSource = true;
                }

                if (attribute.IsAttributeOrDerivedFrom(ParameterizedTests.ValuesAttribute))
                {
                    parameterHasAnyDataSource = true;

                    var arguments = GetArgumentsOfTestDataAttribute(attribute);

                    foreach (var argument in arguments)
                    {
                        AnalyzeArgumentType(argument.Expression, parameterDeclaration, consumer);
                    }
                }
            }

            return(parameterHasAnyDataSource);
        }
 protected override bool IsArgumentChecked(
     ICSharpFunctionDeclaration methodDeclaration, IRegularParameterDeclaration parameterDeclaration)
 {
     // TODO: Verify the completion of the condition || (InvokationDetectionHelper.IsMaximunInvoked(methodDeclaration.Body.GetText(), parameterDeclaration.DeclaredName) && InvokationDetectionHelper.IsMinimalInvoked(methodDeclaration.Body.GetText(), parameterDeclaration.DeclaredName));
     return ArgumentCheckStatementDetectionHelper.IsNotOutOfRangeInvoked(
         methodDeclaration.Body.GetText(), parameterDeclaration.DeclaredName);
 }
        public override sealed bool IsAvailable(IUserDataHolder cache)
        {
            using (ReadLockCookie.Create())
            {
                if (Provider.SelectedElement != null)
                {
                    var catelArgumentType = TypeHelper.CreateTypeByCLRName(CatelCore.Argument, Provider.PsiModule, Provider.SelectedElement.GetResolveContext());
                    _parameterDeclaration = null;
                    _methodDeclaration = null;

                    if (catelArgumentType.GetTypeElement() != null)
                    {
                        if (Provider.SelectedElement != null && Provider.SelectedElement.Parent is IRegularParameterDeclaration)
                        {
                            _parameterDeclaration = Provider.SelectedElement.Parent as IRegularParameterDeclaration;
                            if (_parameterDeclaration.Parent != null && _parameterDeclaration.Parent != null
                                && _parameterDeclaration.Parent.Parent is ICSharpFunctionDeclaration)
                            {
                                _methodDeclaration =
                                    _parameterDeclaration.Parent.Parent as ICSharpFunctionDeclaration;
                            }
                        }
                    }
                    
                }
            }

            return _parameterDeclaration != null && IsArgumentTypeTheExpected(_parameterDeclaration.Type)
                   && _methodDeclaration != null
                   && !IsArgumentChecked(_methodDeclaration, _parameterDeclaration);
        }
 public WrongParameterTypeError(IRegularParameterDeclaration parameterDeclaration, IType type)
 {
     myParameterDeclaration = parameterDeclaration;
     myType = type;
     myMessage = string.Format(
         "Member name parameter type must be implicitly convertible to '{0}'",
         Type.GetPresentableName(CSharpLanguage.Instance));
 }
        private static ICSharpStatement CreateArgumentCheckStatement(ICSharpContextActionDataProvider provider, string pattern, IRegularParameterDeclaration parameterDeclaration)
        {
            Argument.IsNotNull(() => provider);
            Argument.IsNotNullOrWhitespace(() => pattern);
            Argument.IsNotNull(() => parameterDeclaration);

            var catelArgumentType = TypeHelper.CreateTypeByCLRName(CatelCore.Argument, provider.PsiModule, provider.SelectedElement.GetResolveContext());

            return provider.ElementFactory.CreateStatement(pattern, catelArgumentType.GetTypeElement(), parameterDeclaration.DeclaredName);
        }
        private static (NamedElementKinds?, IReferenceName) GetKindAndDeclaration(ILocalVariableDeclaration localVarDeclaration, IFieldDeclaration fieldDeclaration,
                                                                                  IRegularParameterDeclaration regularParameterDeclaration)
        {
            NamedElementKinds?kind           = null;
            IReferenceName    scalarTypeName = null;

            if (localVarDeclaration != null)
            {
                kind           = NamedElementKinds.Locals;
                scalarTypeName = localVarDeclaration.GetScalarTypename();
            }

            else if (fieldDeclaration != null)
            {
                scalarTypeName = fieldDeclaration.GetScalarTypename();
                var isPrivate = fieldDeclaration.GetAccessRights().Has(AccessRights.PRIVATE);

                if (fieldDeclaration.IsStatic)
                {
                    if (isPrivate)
                    {
                        kind = fieldDeclaration.IsReadonly ? NamedElementKinds.PrivateStaticReadonly : NamedElementKinds.PrivateStaticFields;
                    }
                    else
                    {
                        kind = fieldDeclaration.IsReadonly ? NamedElementKinds.StaticReadonly : NamedElementKinds.PublicFields;
                    }
                }
                else
                {
                    kind = isPrivate ? NamedElementKinds.PrivateInstanceFields : NamedElementKinds.PublicFields;
                }
            }

            else if (regularParameterDeclaration != null)
            {
                kind           = NamedElementKinds.Parameters;
                scalarTypeName = regularParameterDeclaration.ScalarTypeName;
            }

            return(kind, scalarTypeName);
        }
Example #7
0
        /// <summary>
        /// Replace empty strings with string dot empty.
        /// </summary>
        /// <param name="node">
        /// The node to process.
        /// </param>
        public static void ReplaceEmptyStringsWithStringDotEmpty(ITreeNode node)
        {
            for (ITreeNode currentNode = node; currentNode != null; currentNode = currentNode.NextSibling)
            {
                if (currentNode is ITokenNode)
                {
                    ITokenNode tokenNode = currentNode as ITokenNode;

                    if (tokenNode.GetTokenType().IsStringLiteral)
                    {
                        IAttribute                   attribute            = tokenNode.GetContainingNode <IAttribute>(true);
                        ISwitchLabelStatement        switchLabelStatement = tokenNode.GetContainingNode <ISwitchLabelStatement>(true);
                        IConstantDeclaration         constantDeclaration  = tokenNode.GetContainingNode <IConstantDeclaration>(true);
                        IRegularParameterDeclaration parameterDeclaration = tokenNode.GetContainingNode <IRegularParameterDeclaration>(true);

                        // Not for attributes, switch labels, constant declarations, or parameter declarations
                        if (attribute == null && switchLabelStatement == null && constantDeclaration == null && parameterDeclaration == null)
                        {
                            string text = currentNode.GetText();
                            if (text == "\"\"" || text == "@\"\"")
                            {
                                const string NewText    = "string.Empty";
                                ITokenNode   newLiteral =
                                    (ITokenNode)
                                    CSharpTokenType.STRING_LITERAL_REGULAR.Create(new JetBrains.Text.StringBuffer(NewText), new TreeOffset(0), new TreeOffset(NewText.Length));

                                using (WriteLockCookie.Create(true))
                                {
                                    LowLevelModificationUtil.ReplaceChildRange(currentNode, currentNode, new ITreeNode[] { newLiteral });
                                }
                            }
                        }
                    }
                }

                if (currentNode.FirstChild != null)
                {
                    ReadabilityRules.ReplaceEmptyStringsWithStringDotEmpty(currentNode.FirstChild);
                }
            }
        }
 protected abstract bool IsArgumentChecked(ICSharpFunctionDeclaration methodDeclaration, IRegularParameterDeclaration parameterDeclaration);
 protected override bool IsArgumentCheckDocumented(XmlNode xmlDocOfTheMethod, IRegularParameterDeclaration parameterDeclaration)
 {
     return ExceptionXmlDocDetectionHelper.NotNullOrEmptyDocumented(xmlDocOfTheMethod.InnerXml, parameterDeclaration.DeclaredName);
 }
 protected override ICSharpStatement CreateArgumentCheckStatement(IRegularParameterDeclaration parameterDeclaration)
 {
     return ArgumentCheckStatementHelper.CreateIsNotNullOrEmptyArgumentCheckStatement(this.Provider, parameterDeclaration);
 }
 protected override ICSharpStatement CreateArgumentCheckStatement(
     IRegularParameterDeclaration parameterDeclaration)
 {
     return ArgumentCheckStatementHelper.CreateImplementsInterfaceArgumentCheckStatement(
         this.Provider, parameterDeclaration);
 }
 public static ICSharpStatement CreateIsMatchArgumentCheckStatement(ICSharpContextActionDataProvider provider, IRegularParameterDeclaration parameterDeclaration)
 {
     return CreateArgumentCheckStatement(provider, ArgumentCheckStatementPatterns.IsMatch, parameterDeclaration);
 }
 protected abstract string CreateExceptionXmlDoc(IRegularParameterDeclaration parameterDeclaration);
 protected abstract ICSharpStatement CreateArgumentCheckStatement(IRegularParameterDeclaration parameterDeclaration);
 protected override string CreateExceptionXmlDoc(IRegularParameterDeclaration parameterDeclaration)
 {
     return ExceptionXmlDocHelper.GetImplementsInterfaceExceptionXmlDoc(parameterDeclaration.DeclaredName);
 }
 private static bool GetMatchingParameterDeclaration(ICSharpArgumentInfo argument,
     out IRegularParameterDeclaration matchingVarDecl)
 {
     var matchingArgument = TreeNodeHandlerUtil.GetMatchingArgument(argument);
     matchingVarDecl = matchingArgument as IRegularParameterDeclaration;
     if (matchingVarDecl == null)
         return true;
     return false;
 }
 protected override bool IsArgumentCheckDocumented(
     XmlNode xmlDocOfTheMethod, IRegularParameterDeclaration parameterDeclaration)
 {
     return false;
 }
 protected override string CreateExceptionXmlDoc(IRegularParameterDeclaration parameterDeclaration)
 {
     return ExceptionXmlDocHelper.GetIsNotNullOrEmptyExceptionXmlDoc(parameterDeclaration.DeclaredName);
 }
 protected override bool IsArgumentChecked(
     ICSharpFunctionDeclaration methodDeclaration, IRegularParameterDeclaration parameterDeclaration)
 {
     return false;
 }
 protected override bool IsArgumentChecked(ICSharpFunctionDeclaration methodDeclaration, IRegularParameterDeclaration parameterDeclaration)
 {
     return ArgumentCheckStatementDetectionHelper.IsNotNullOrEmptyInvoked(methodDeclaration.Body.GetText(), parameterDeclaration.DeclaredName);
 }
 protected abstract bool IsArgumentCheckDocumented(XmlNode xmlDocOfTheMethod, IRegularParameterDeclaration parameterDeclaration);