/// <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 data member is changed.
     if (this.NumOfChangedField(mAnalyzer) != 0)
     {
         return(false);
     }
     // 2. Return type is bool.
     if (mAnalyzer.RTypeIsBoolean())
     {
         // 3. Do not directly return any data member.
         if (this.NumOfDirectRetField(mAnalyzer) == 0)
         {
             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);
     }
 }
Example #3
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);
            }
        }
        /// <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);
            }
        }