# Class ProblemId

java.lang.Object
org.gradle.api.problems.ProblemId

@Incubating public abstract class ProblemId extends Object
Represents a unique identifier for a problem definition.

Problem IDs are defined with a name and with group hierarchy. For example, in the domain of Java compilation problems, the id object for unused variable warnings would be:

    ProblemId(name: unused-variable, displayName: Unused Variable, group:
        ProblemGroup(name: java, displayName: Java compilation, parent:
            ProblemGroup(name: compilation, displayName: Compilation, parent: null)))

From the name fields a fully qualified name can be inferred: `compilation:java:unused-variable`. Also, the display names are intended for display on some user interface. Consumers of problem reports can build a tree representation of problems:

    (Problem view)
    Compilation
        Java compilation
            Foo.java#L10: unused variable a
            Foo.java#L20: unused variable b

Since:
  8.13
See Also:
  - `ProblemDefinition`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `ProblemId()`
  Constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ProblemId`
  `create(String name, String displayName, ProblemGroup group)`
  Creates a new problem id.
  `abstract String`
  `getDisplayName()`
  A human-readable label describing the problem ID.
  `abstract ProblemGroup`
  `getGroup()`
  The parent group.
  `abstract String`
  `getName()`
  The name of the problem.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ProblemId

    protected ProblemId()
    Constructor.
    Since:
      8.13

- ## Method Details

  - ### getName

    public abstract String getName()
    The name of the problem.

    Then name should be used categorize to create a fully qualified name and to categorize a set of problems. The name itself does not need to be unique, the uniqueness is determined the name and the group hierarchy.

    Since:
      8.13

  - ### getDisplayName

    public abstract String getDisplayName()
    A human-readable label describing the problem ID.

    The display name should be used to present the problem to the user.

    Since:
      8.13

  - ### getGroup

    public abstract ProblemGroup getGroup()
    The parent group.
    Since:
      8.13

  - ### create

    public static ProblemId create(String name, String displayName, ProblemGroup group)
    Creates a new problem id.
    Parameters:
      `name` - the name of the problem. The convention is to use kebab-case (ie lower case with hyphens). Cannot be blank (i.e., `null`, empty string, or only whitespaces).
      `displayName` - the user-friendly display name of the problem. Cannot be blank (i.e., `null`, empty string, or only whitespaces).
      `group` - the group to which the problem belongs. Cannot be null.
    Returns:
      the new problem id
    Since:
      8.13