Exemplo n.º 1
0
 /// <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. No class field is changed.
     if (this.NumOfChangedField(mAnalyzer) != 0)
     {
         return(false);
     }
     // 2. Return type is not void.
     if (mAnalyzer.RTypeIsVoid())
     {
         return(false);
     }
     // 3. Only return one class field. (Directly)
     if (this.NumOfDirectRetField(mAnalyzer) == 1 && this.NumOfIndirectRetField(mAnalyzer) == 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 2
0
        /// <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)
        {
            int num = this.NumOfChangedField(mAnalyzer);

            // 1. Complex change to the object state is performed. (More than one class field is changed.)
            if (num > 1)
            {
                // 2. Return type is void or Boolean
                if (mAnalyzer.RTypeIsBoolean() || mAnalyzer.RTypeIsVoid())
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
 protected override bool MakeClassification(MethodAnalyzer mAnalyzer)
 {
     //1. No data member is changed.
     if (this.NumOfChangedField(mAnalyzer) != 0)
     {
         return(false);
     }
     //2. Return type is NOT bool.
     if (mAnalyzer.RTypeIsBoolean() || mAnalyzer.RTypeIsVoid())
     {
         return(false);
     }
     // 3. Do not return one data member directly. (directly > 1 || indirectly > 0)
     if (this.NumOfDirectRetField(mAnalyzer) > 1 || this.NumOfIndirectRetField(mAnalyzer) > 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 4
0
        /// <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)
        {
            int num = this.NumOfChangedField(mAnalyzer);

            //1. Only one data member is changed
            if (num == 1)
            {
                //2. Return type is void or Boolean
                if (mAnalyzer.RTypeIsBoolean() || mAnalyzer.RTypeIsVoid())
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }