[Mono-bugs] [Bug 622972] New: CheckParametersNullityInVisibleMethodsRule does not validate generic methods

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Jul 16 08:43:35 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=622972

http://bugzilla.novell.com/show_bug.cgi?id=622972#c0


           Summary: CheckParametersNullityInVisibleMethodsRule does not
                    validate generic methods
    Classification: Mono
           Product: Mono: Tools
           Version: unspecified
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Gendarme
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: tobias.schoenit at schaeffler.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Using this code that checks the nullity the report result is not correct:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MonoGendarmeSamples
{
    using System.IO;

    public class GenericClass
    {
        public bool Test1<T>(T fs)
            where T:Stream
        {
            return fs.CanRead;
        }

        public bool Test2<T>(T fs)
            where T : Stream
        {
            if (fs == null)
            {
                return false;
            }

            return fs.CanRead;
        }

        public bool Test2Equals<T>(T fs)
            where T : Stream
        {
            if (Equals(fs, null))
            {
                return false;
            }

            return fs.CanRead;
        }

        public bool Test2EqualsDefault<T>(T fs)
            where T : Stream
        {
            if (Equals(fs, default(Stream)))
            {
                return false;
            }

            return fs.CanRead;
        }

        public bool Test3<T>(T fs)
            where T : Stream
        {
            if (fs != null)
            {
                return fs.CanRead;
            }

            return false;
        }

        public bool Test3Equals<T>(T fs)
            where T : Stream
        {
            if (!Equals(fs, null))
            {
                return fs.CanRead;
            }

            return false;
        }

        public bool Test3EqualsDefault<T>(T fs)
            where T : Stream
        {
            if (!Equals(fs, default(Stream)))
            {
                return fs.CanRead;
            }

            return false;
        }
    }
}




report:
Gendarme Report

Produced on 16.07.2010 12:41:53 UTC.
Table of contents

1.  Summary
  1.1.  List of assemblies searched
  1.2.  List of rules used
2.  Reported defects
  2.1. CheckParametersNullityInVisibleMethodsRule
Summary

Gendarme found 7 potential defects using 1 rules.

List of assemblies analyzed [show]

    *
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\bin\Debug\MonoGendarmeSamples.dll:
7 defects

List of rules used [show]

Assembly:

    * None

Type:

    * None

Method:

    * Gendarme.Rules.Correctness.CheckParametersNullityInVisibleMethodsRule : 7
defects

Reported Defects

1. CheckParametersNullityInVisibleMethodsRule  [hide]
Problem:

A visible method does not check its parameter(s) for null values.
Solution:

Since the caller is unknown you should always verify all of your parameters to
protect yourself.
7 defect(s) found:

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test1(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈13)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test2(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈19)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test2Equals(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈30)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test2EqualsDefault(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈41)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test3(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈52)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test3Equals(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈63)
Go to CheckParametersNullityInVisibleMethodsRule description

Target: System.Boolean MonoGendarmeSamples.GenericClass::Test3EqualsDefault(T)
Assembly: MonoGendarmeSamples, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null

Severity: High  Confidence: Normal
Location: fs
Source:
C:\wc\04_Prototypes\MonoGendarmeSamples\MonoGendarmeSamples\GenericClass.cs(≈74)
Go to CheckParametersNullityInVisibleMethodsRule description

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list