JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C#


CSHARP.STRUCT.UUMETH : Unused Method (C#)

Summary

A method or constructor is not called.

Methods or constructors never used in the code are often harmless, except for an increase in size of the application. In some cases, however, unused methods are the sign of a stale application interface that needs cleaning or of the necessity to introduce an abstract method.

Properties

Class Name Unused Method (C#)
Significance reliability
Mnemonic CSHARP.STRUCT.UUMETH
Categories
CWE CWE:561 Dead Code
Availability Available for C# only.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Unused Method (C#)"

Example

In the following code, the implementation of method m inside class A is never called: only its redefinitions inside classes B and C are called.

using System;

namespace DocumentationExamples {

  public class Deadcode {

    public static void Main(string[] args) {
      DeadcodeA b = new DeadcodeB();
      DeadcodeA c = new DeadcodeC();
      Test(b);
      Test(c);
    }

    private static void Test(DeadcodeA a) {
      Console.WriteLine(a.M(13));
    }
  }

  public class DeadcodeA {
    public virtual int M(int p) { // "Unused Method (C#)" warning issued here
                                  // if CSHARP_ANALYSIS_ENTRY_POINTS_MODE is set to ONLY_EXPLICIT_ENTRIES or ONLY_STANDARD_ENTRIES
      return p + 1;
    }
  }

  public class DeadcodeB : DeadcodeA {
    public override int M(int p) {
      return p + 2;
    }
  }

  public class DeadcodeC : DeadcodeA {
    public override int M(int p) {
      return p * 2;
    }
  }
}

In this example, the programmer should probably introduce an abstract definition for M inside class DeadcodeA and make the class DeadcodeA itself abstract, as follows:

public abstract class DeadcodeA
{
  public abstract int M(int p);
}

Resolution

Verify if the application interface can be simplified or an abstract method could replace a non-abstract method.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.

 

To report problems with this documentation, please visit https://support.codesecure.com/.