/// <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); } }
/// <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); } }