override public void Process(string filename1, string filename2, string srcCode1, string srcCode2)
        {
            string[] lines1 = srcCode1.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            string[] lines2 = srcCode2.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            double   index  = 0.0;
            string   cleanLine;

            foreach (string line in lines1)
            {
                cleanLine = line.TrimEnd(';').TrimStart(' ', '\t');

                if (cleanLine.Length > MinLineLengthThreshold &&
                    lines2.Contains(cleanLine) && Regex.Matches(cleanLine, FunctionPattern).Count == 0)
                {
                    LoggedMessages.Add("<p>Code line matched comparing "
                                       + "<a href=\"" + filename1 + "\">" + Path.GetFileName(filename1)
                                       + "</a> and "
                                       + "<a href=\"" + filename2 + "\">" + Path.GetFileName(filename2)
                                       + "</a>:"
                                       + cleanLine + "</p>");
                    index += codeLineUniqueness(cleanLine);
                }
            }
            SimilarityIndex = index;
        }
Esempio n. 2
0
        public void WriteEvent(ILogEventHeader logEventHeader, byte[] messageBytes, int messageLength)
        {
            if (_captureLoggedMessages)
            {
                LoggedMessages.Add(Encoding.ASCII.GetString(messageBytes, 0, messageLength));
            }

            if (++_messageCount == _messageCountTarget)
            {
                _signal.Set();
            }
        }
        override public void Process(string filename1, string filename2, string srcCode1, string srcCode2)
        {
            string structure1 = AnalyzeCodeStructure(srcCode1);
            string structure2 = AnalyzeCodeStructure(srcCode2);

            if (structure1.Length > MinLengthThreshold && structure1 == structure2)
            {
                double index = (double)(structure1.Length - MinLengthThreshold) / (double)MaxStructureLength;
                SimilarityIndex = Math.Max(0.0, index);
                LoggedMessages.Add("<p>Same structure comparing "
                                   + "<a href=\"" + filename1 + "\">" + Path.GetFileName(filename1)
                                   + "</a> and "
                                   + "<a href=\"" + filename2 + "\">" + Path.GetFileName(filename2)
                                   + "</a></p>");
                LoggedMessages.Add("<p>Pattern: " + structure1 + "</p>");
            }
        }
Esempio n. 4
0
        double CompareVariableLists(string filename1, string filename2, List <string> list1, List <string> list2)
        {
            double similarityIndex = 0.0;

            foreach (string VarName in list1)
            {
                if (VarName.Length >= MinNameLengthThreshold && list2.Exists(name => VarName == name) &&
                    !MatchedVariables.Exists(name => VarName == name))
                {
                    LoggedMessages.Add("<p>Variable name matched comparing "
                                       + "<a href=\"" + filename1 + "\">" + Path.GetFileName(filename1)
                                       + "</a> and "
                                       + "<a href=\"" + filename2 + "\">" + Path.GetFileName(filename2)
                                       + "</a>:"
                                       + VarName + "</p>");
                    MatchedVariables.Add(VarName);
                    similarityIndex += VariableUniquenessIndex(VarName);
                }
            }
            return(similarityIndex);
        }