Exemplo n.º 1
0
        private List <Issue> ApplyRule(CaDETMember m)
        {
            List <Issue> issues = _rules.Select(r => r.Validate(m.Name, m.Metrics)).ToList();

            issues.AddRange(_dynamicRules.Select(r => r.Validate(m.Name, m.Metrics)).ToList());
            return(issues);
        }
Exemplo n.º 2
0
 internal CSharpCaDETMemberBuilder(MemberDeclarationSyntax cSharpMember, SemanticModel semanticModel)
 {
     _member           = CreateMemberBasedOnType(cSharpMember);
     _cSharpMember     = cSharpMember;
     _semanticModel    = semanticModel;
     _metricCalculator = new CaDETMemberMetricCalculator();
 }
        private int CountOwnFieldAndAccessorAccessed(CaDETClass parsedClass, CaDETMember method)
        {
            int counter = method.AccessedFields.Count(field => Enumerable.Contains(parsedClass.Fields, field));

            counter += method.AccessedAccessors.Count(accessor => Enumerable.Contains(parsedClass.Members, accessor));

            return(counter);
        }
Exemplo n.º 4
0
        private List <string> GetMemberNames(CaDETMember member)
        {
            var memberNames = new List <string> {
                member.Name
            };

            memberNames.AddRange(member.Variables.Select(v => v.Name));
            memberNames.AddRange(member.Params.Select(p => p.Name));
            return(memberNames);
        }
Exemplo n.º 5
0
        private List <CaDETVariable> LinkMethodVariables(List <CaDETClass> classes, CaDETMember member)
        {
            List <CaDETVariable> linkedVariables = new List <CaDETVariable>();

            foreach (var variable in member.Variables)
            {
                var variableTypes = GetTypes(classes, variable.Type);
                if (variableTypes != null)
                {
                    variable.Type.LinkedTypes = variableTypes;
                }
                linkedVariables.Add(variable);
            }
            return(linkedVariables);
        }
Exemplo n.º 6
0
        public Dictionary <CaDETMetric, double> GetMetricsForCodeSnippet(string snippetId)
        {
            CaDETClass classInstance = Classes.FirstOrDefault(c => c.FullName.Equals(snippetId));

            if (classInstance != null)
            {
                return(classInstance.Metrics);
            }

            CaDETMember memberInstance = null;

            foreach (var cl in Classes)
            {
                memberInstance = cl.Members.FirstOrDefault(m => m.ToString().Equals(snippetId));
                if (memberInstance != null)
                {
                    break;
                }
            }
            return(memberInstance.Metrics);
        }
Exemplo n.º 7
0
 internal Dictionary <CaDETMetric, double> CalculateMemberMetrics(MemberDeclarationSyntax member, CaDETMember method)
 {
     return(new Dictionary <CaDETMetric, double>
     {
         [CaDETMetric.CYCLO] = CalculateCyclomaticComplexity(member),
         [CaDETMetric.MLOC] = CountLinesOfText(member.ToString()),
         [CaDETMetric.MELOC] = GetEffectiveLinesOfCode(member),
         [CaDETMetric.NOP] = GetNumberOfParameters(method),
         [CaDETMetric.NOLV] = GetNumberOfLocalVariables(member),
         [CaDETMetric.NOTC] = CountTryCatchBlocks(member),
         [CaDETMetric.MNOL] = CountLoops(member),
         [CaDETMetric.MNOR] = CountReturnStatements(member),
         [CaDETMetric.MNOC] = CountComparisonOperators(member),
         [CaDETMetric.MNOA] = CountNumberOfAssignments(member),
         [CaDETMetric.NONL] = CountNumberOfNumericLiterals(member),
         [CaDETMetric.NOSL] = CountNumberOfStringLiterals(member),
         [CaDETMetric.NOMO] = CountNumberOfMathOperations(member),
         [CaDETMetric.NOPE] = CountNumberOfParenthesizedExpressions(member),
         [CaDETMetric.NOLE] = CountNumberOfLambdaExpressions(member),
         [CaDETMetric.MMNB] = CountMaxNestedBlocks(member),
         [CaDETMetric.NOUW] = CountNumberOfUniqueWords(member)
     });
 }
Exemplo n.º 8
0
 /// <summary>
 /// DOI: 10.1002/smr.2255
 /// </summary>
 private int GetNumberOfParameters(CaDETMember method)
 {
     return(method.Params.Count);
 }