Esempio n. 1
0
 private string GetVariableNameFeedback()
 {
     if (string.IsNullOrEmpty(NewName))
     {
         return(string.Empty);
     }
     if (_forbiddenNames.Any(name => name.Equals(NewName, StringComparison.OrdinalIgnoreCase)))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_NewNameAlreadyUsedFormat, NewName));
     }
     if (VariableNameValidator.StartsWithDigit(NewName))
     {
         return(RubberduckUI.AssignedByValDialog_DoesNotStartWithLetter);
     }
     if (VariableNameValidator.HasSpecialCharacters(NewName))
     {
         return(RubberduckUI.AssignedByValDialog_InvalidCharacters);
     }
     if (VariableNameValidator.IsReservedIdentifier(NewName))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_ReservedKeywordFormat, NewName));
     }
     if (!VariableNameValidator.IsMeaningfulName(NewName))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_QuestionableEntryFormat, NewName));
     }
     return(string.Empty);
 }
        protected override IEnumerable <IInspectionResult> DoGetInspectionResults()
        {
            var settings         = _settings.Load(new CodeInspectionSettings()) ?? new CodeInspectionSettings();
            var whitelistedNames = settings.WhitelistedIdentifiers.Select(s => s.Identifier).ToArray();

            var handlers = State.DeclarationFinder.FindEventHandlers();

            var issues = UserDeclarations
                         .Where(declaration => !string.IsNullOrEmpty(declaration.IdentifierName) &&
                                !IgnoreDeclarationTypes.Contains(declaration.DeclarationType) &&
                                !(declaration.Context is LineNumberLabelContext) &&
                                (declaration.ParentDeclaration == null ||
                                 !IgnoreDeclarationTypes.Contains(declaration.ParentDeclaration.DeclarationType) &&
                                 !handlers.Contains(declaration.ParentDeclaration)) &&
                                !whitelistedNames.Contains(declaration.IdentifierName) &&
                                !VariableNameValidator.IsMeaningfulName(declaration.IdentifierName));

            return((from issue in issues
                    let props = issue.DeclarationType.HasFlag(DeclarationType.Module) ||
                                issue.DeclarationType.HasFlag(DeclarationType.Project)
                        ? new Dictionary <string, string> {
                { "DisableFixes", "IgnoreOnceQuickFix" }
            } : null
                    select new DeclarationInspectionResult(this,
                                                           string.Format(InspectionsUI.IdentifierNameInspectionResultFormat,
                                                                         RubberduckUI.ResourceManager.GetString("DeclarationType_" + issue.DeclarationType,
                                                                                                                CultureInfo.CurrentUICulture), issue.IdentifierName), issue, properties: props))
                   .ToList());
        }
 private string GetVariableNameFeedback()
 {
     if (string.IsNullOrEmpty(NewName))
     {
         return(string.Empty);
     }
     if (_isConflictingName(NewName))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_NewNameAlreadyUsedFormat, NewName));
     }
     if (VariableNameValidator.StartsWithDigit(NewName))
     {
         return(RubberduckUI.AssignedByValDialog_DoesNotStartWithLetter);
     }
     if (VariableNameValidator.HasSpecialCharacters(NewName))
     {
         return(RubberduckUI.AssignedByValDialog_InvalidCharacters);
     }
     if (VariableNameValidator.IsReservedIdentifier(NewName))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_ReservedKeywordFormat, NewName));
     }
     if (!VariableNameValidator.IsMeaningfulName(NewName))
     {
         return(string.Format(RubberduckUI.AssignedByValDialog_QuestionableEntryFormat, NewName));
     }
     return(string.Empty);
 }
Esempio n. 4
0
        private void SetControlsProperties()
        {
            var isValid = VariableNameValidator.IsValidName(NewName) && !_forbiddenNames.Any(name => name.Equals(NewName, StringComparison.OrdinalIgnoreCase));

            OkButton.Visible = isValid;
            OkButton.Enabled = isValid;
            InvalidNameValidationIcon.Visible = !isValid;
        }
        private void SetControlsProperties()
        {
            var isValid = VariableNameValidator.IsValidName(NewName);

            OkButton.Visible = isValid;
            OkButton.Enabled = isValid;
            InvalidNameValidationIcon.Visible = !isValid;
        }
Esempio n. 6
0
 public void Simple()
 {
     VariableNameValidator.ValidateSuffix("a2fa");
     VariableNameValidator.ValidateSuffix("2");
     VariableNameValidator.ValidateSuffix("_");
     VariableNameValidator.ValidateSuffix("a");
     VariableNameValidator.ValidateSuffix("$");
     Assert.Throws <Exception>(() => VariableNameValidator.ValidateSuffix("@"));
     Assert.Throws <Exception>(() => VariableNameValidator.ValidateSuffix("/"));
     Assert.Throws <Exception>(() => VariableNameValidator.ValidateSuffix(@"\"));
     Assert.Throws <Exception>(() => VariableNameValidator.ValidateSuffix("%"));
 }
        protected override IEnumerable <IInspectionResult> DoGetInspectionResults()
        {
            var settings         = _settings.Load(new CodeInspectionSettings()) ?? new CodeInspectionSettings();
            var whitelistedNames = settings.WhitelistedIdentifiers.Select(s => s.Identifier).ToArray();

            var handlers = State.DeclarationFinder.FindEventHandlers();

            var issues = UserDeclarations
                         .Where(declaration => !string.IsNullOrEmpty(declaration.IdentifierName) &&
                                !IgnoreDeclarationTypes.Contains(declaration.DeclarationType) &&
                                !(declaration.Context is LineNumberLabelContext) &&
                                (declaration.ParentDeclaration == null ||
                                 !IgnoreDeclarationTypes.Contains(declaration.ParentDeclaration.DeclarationType) &&
                                 !handlers.Contains(declaration.ParentDeclaration)) &&
                                !whitelistedNames.Contains(declaration.IdentifierName) &&
                                !VariableNameValidator.IsMeaningfulName(declaration.IdentifierName));

            return((from issue in issues select CreateInspectionResult(this, issue))
                   .ToList());
        }
 private bool IsValidVariableName(string variableName, IEnumerable <string> forbiddenNames)
 {
     return(VariableNameValidator.IsValidName(variableName) &&
            !forbiddenNames.Any(name => name.Equals(variableName, StringComparison.InvariantCultureIgnoreCase)));
 }
Esempio n. 9
0
        public void DeclarationFinder_FindsAccessibleDeclarations_All()
        {
            //Tests that the DeclarationFinder does not return any unexpected declarations
            //excluding Reserved Identifiers
            SetupSUT("TestProject");
            var           allNamesUsedInTests = new List <string>();
            List <string> names;

            foreach (var Key in _tdo.AccessibleNames.Keys)
            {
                _tdo.AccessibleNames.TryGetValue(Key, out names);
                allNamesUsedInTests.AddRange(names);
            }
            allNamesUsedInTests.AddRange(_tdo.Components.Select(n => n.Name));

            var target = GetTargetForAccessibilityTests();

            var accessibleNames =
                _tdo.Parser.State.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(target)
                .Select(dec => dec.IdentifierName);

            Assert.IsTrue(accessibleNames.Count() > 0);

            var unexpectedDeclarations = accessibleNames.Except(allNamesUsedInTests).ToList().Where(n => !VariableNameValidator.IsReservedIdentifier(n));

            string failureMessage = string.Empty;

            if (unexpectedDeclarations.Count() > 0)
            {
                failureMessage = unexpectedDeclarations.Count().ToString() + " unexpected declaration(s) found:";
                foreach (string identifier in unexpectedDeclarations)
                {
                    failureMessage = failureMessage + " '" + identifier + "', ";
                }
                failureMessage = failureMessage.Substring(0, failureMessage.Length - 2);
            }

            Assert.AreEqual(0, unexpectedDeclarations.Count(), failureMessage);
        }
Esempio n. 10
0
 private bool VariableNameIsValid(string variableName)
 {
     return(VariableNameValidator.IsValidName(variableName) &&
            !_forbiddenNames.Any(name => name.Equals(variableName, System.StringComparison.InvariantCultureIgnoreCase)));
 }
Esempio n. 11
0
 private bool IsValidVariableName(string variableName)
 {
     return(VariableNameValidator.IsValidName(variableName) &&
            !IsNameCollision(variableName));
 }