Esempio n. 1
0
        public void Match_HardcodedPasswordAspx_WithoutException()
        {
            var hardcodedPassRepository = new DslPatternRepository("<[(?i)password]> = <[\"\\w*\"]>", LanguageFlags.CSharp);
            var sourceCodeRep           = new FileCodeRepository(Path.Combine(TestHelper.TestsDataPath, "HardcodedPassword.aspx"));
            var workflow = new Workflow(sourceCodeRep, Language.CSharp, hardcodedPassRepository);

            MatchingResultDto[] matchingResults = workflow.Process().MatchingResults.ToDto(workflow.SourceCodeRepository);

            Assert.IsTrue(matchingResults[0].MatchedCode.Contains("password = \"hardcoded\""));
            Assert.IsTrue(matchingResults[1].MatchedCode.Contains("PASSWORD = \"hardcoded\""));
        }
Esempio n. 2
0
        public void Match_RefOutArg()
        {
            var codeRepository     = new MemorySourceRepository("class P { void Main() { Func(ref a); } }", "test.cs");
            var patternsRepository = new DslPatternRepository("Func(a)", "CSharp");
            var logger             = new TestLogger();
            var workflow           = new Workflow(codeRepository, patternsRepository)
            {
                Logger = logger
            };

            workflow.Process();

            Assert.AreEqual(1, logger.Matches.Count);
        }
Esempio n. 3
0
        public void Match_HardcodedPasswordAspx_WithoutException()
        {
            var hardcodedPassRepository = new DslPatternRepository("<[(?i)password]> = <[\"\\w*\"]>", "CSharp");
            var sourceCodeRep           = new FileCodeRepository(Path.Combine(TestUtility.TestsDataPath, "HardcodedPassword.aspx"));
            var workflow = new Workflow(sourceCodeRep, hardcodedPassRepository);
            IEnumerable <MatchResultDto> matchResults = workflow.Process().MatchResults.ToDto();

            string match = matchResults.ElementAt(0).MatchedCode;

            Assert.IsTrue(match.Contains("password") && match.Contains("hardcoded"));

            match = matchResults.ElementAt(1).MatchedCode;
            Assert.IsTrue(match.Contains("PASSWORD") && match.Contains("hardcoded"));
        }
Esempio n. 4
0
        public void Match_HardcodedPasswordAspx_WithoutException()
        {
            var hardcodedPassRepository = new DslPatternRepository("<[(?i)password]> = <[\"\\w*\"]>", "CSharp");
            var sourceRep = CreateTestFileSourceRepository("HardcodedPassword.aspx");
            var logger    = new TestLogger();
            var workflow  = new Workflow(sourceRep, hardcodedPassRepository)
            {
                Logger = logger
            };

            workflow.Process();
            IEnumerable <MatchResultDto> matchResults = logger.Matches.ToDto();

            string match = matchResults.ElementAt(0).MatchedCode;

            Assert.IsTrue(match.Contains("password") && match.Contains("hardcoded"));

            match = matchResults.ElementAt(1).MatchedCode;
            Assert.IsTrue(match.Contains("PASSWORD") && match.Contains("hardcoded"));
        }
Esempio n. 5
0
        internal void UpdateMatchings()
        {
            sourceCodeLogger.Clear();

            var sourceCodeRep = new MemoryCodeRepository(sourceCodeTextBox.Text);
            IPatternsRepository patternRepository;

            if (!string.IsNullOrEmpty(ServiceLocator.PatternViewModel.Value))
            {
                patternRepository = new DslPatternRepository(ServiceLocator.PatternViewModel.Value, ServiceLocator.PatternViewModel.Languages);
            }
            else
            {
                patternRepository = new MemoryPatternsRepository();
            }
            var workflow = new Workflow(sourceCodeRep, SelectedLanguage, patternRepository, stage: Stage);

            workflow.IsIncludeIntermediateResult = true;
            workflow.Logger = sourceCodeLogger;
            WorkflowResult workflowResult = workflow.Process();

            MatchingResultDto[] matchingResults = workflowResult.MatchingResults
                                                  .ToDto(workflow.SourceCodeRepository)
                                                  .ToArray();

            if (IsDeveloperMode)
            {
                AntlrParseTree antlrParseTree = workflowResult.ParseTrees.FirstOrDefault() as AntlrParseTree;
                if (antlrParseTree != null && antlrParseTree.SyntaxTree != null)
                {
                    Antlr4.Runtime.Parser antlrParser = (workflow.ParserConverterSets[antlrParseTree.SourceLanguage].Parser as AntlrParser).Parser;
                    string tokensString = AntlrHelper.GetTokensString(antlrParseTree.Tokens, antlrParser.Vocabulary, onlyDefaultChannel: true);
                    string treeString   = antlrParseTree.SyntaxTree.ToStringTreeIndented(antlrParser);

                    Tokens    = tokensString;
                    ParseTree = treeString;
                    File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "Tokens.txt"), Tokens);
                    File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "Tree.txt"), ParseTree);
                }
                if (Stage >= Stage.Convert && workflowResult.Usts.FirstOrDefault() != null)
                {
                    UstJson = jsonSerializer.Serialize(workflowResult.Usts.FirstOrDefault().Root);
                    File.WriteAllText(Path.Combine(ServiceLocator.TempDirectory, "UST.json"), UstJson);
                }
            }

            MatchingResultText = "MATCHINGS";
            if (matchingResults.Count() > 0)
            {
                MatchingResultText += " (" + matchingResults.Count() + ")";
            }

            if (sourceCodeLogger.ErrorCount == 0)
            {
                SourceCodeErrorsIsVisible = false;
                SourceCodeErrorsText      = "ERRORS";
            }
            else
            {
                SourceCodeErrorsIsVisible = true;
                SourceCodeErrorsText      = $"ERRORS ({sourceCodeLogger.ErrorCount})";
            }

            Dispatcher.UIThread.InvokeAsync(() =>
            {
                MatchingResults.Clear();
                foreach (var matchingResult in matchingResults)
                {
                    MatchingResults.Add(new MathingResultDtoWrapper(matchingResult));
                }
                this.RaisePropertyChanged(nameof(Tokens));
                this.RaisePropertyChanged(nameof(ParseTree));
                this.RaisePropertyChanged(nameof(UstJson));
                this.RaisePropertyChanged(nameof(MatchingResultText));
                this.RaisePropertyChanged(nameof(SourceCodeErrorsIsVisible));
                this.RaisePropertyChanged(nameof(SourceCodeErrorsText));
            });
        }