Exemplo n.º 1
0
        /// <summary>
        /// Returns number of non primitive local variables in this method
        /// </summary>
        /// <param name="mAnalyzer"></param>
        /// <returns></returns>
        protected int GetNumOfNonPrimitiveVariables(MethodAnalyzer mAnalyzer)
        {
            int count = 0;

            foreach (var vb in mAnalyzer.VariablesInfo)
            {
                if (!mAnalyzer.IsPrimitiveType(vb.GetVariableType()))
                {
                    count++;
                }
            }
            return(count);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets number of modified non-primitive parameters
        /// </summary>
        /// <param name="mAnalyzer"></param>
        /// <returns></returns>
        protected int GetNumOfModifiedObjPara(MethodAnalyzer mAnalyzer)
        {
            int count = 0;

            foreach (var vb in mAnalyzer.ParametersInfo)
            {
                if (!mAnalyzer.IsPrimitiveType(vb.GetVariableType()) && vb.IsModified)
                {
                    count++;
                }
            }
            return(count);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns number of non primitive parameters in this method
        /// </summary>
        /// <param name="mAnalyzer"></param>
        /// <returns></returns>
        protected int GetNumOfNonPrimitiveParameters(MethodAnalyzer mAnalyzer)
        {
            int count = 0;

            foreach (var para in mAnalyzer.ParametersInfo)
            {
                if (!mAnalyzer.IsPrimitiveType(para.GetVariableType()))
                {
                    count++;
                }
            }
            return(count);
        }
        /// <summary>
        /// Classifies the given method
        /// </summary>
        /// <param name="node">The AnalyzedMethod to test</param>
        /// <returns>True if the node meets the conditions for this rule, False otherwise.</returns>
        protected override bool MakeClassification(MethodAnalyzer mAnalyzer)
        {
            // 1. Cannot be primitive type
            if (mAnalyzer.IsPrimitiveType(mAnalyzer.ReturnType))
            {
                return(false);
            }

            // 2. Local varible is instantiated and returned.
            foreach (var vi in mAnalyzer.VariablesInfo)
            {
                if (vi.IsReturned == true && vi.IsInstantiated)
                {
                    return(true);
                }
            }
            foreach (var vi in mAnalyzer.ParametersInfo)
            {
                if (vi.IsReturned == true && vi.IsInstantiated)
                {
                    return(true);
                }
            }

            // 3. Create and return a new object directly
            if (mAnalyzer.IsReturnNewObj)
            {
                return(true);
            }

            //// *4. Parameter is instantiated in the method and it's not primitive type.
            //foreach(var vi in aMethod.ParametersInfo) {
            //    if(!aMethod.IsPrimitiveType(vi.GetVariableType()) &&  vi.IsInstantiated) {
            //        return true;
            //    }
            //}

            // returns false if it could not pass all the cases.
            return(false);
        }