# Interface ProblemId

@Incubating public interface ProblemId
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.9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getDisplayName()`
  A human-readable label describing the problem ID.
  `ProblemGroup`
  `getGroup()`
  Returns the container group.
  `String`
  `getName()`
  The name of the problem.

- ## Method Details

  - ### getName

    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.

    The convention for problem names is to use kebab-case (ie lower case with hyphens).

    Since:
      8.9

  - ### getDisplayName

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

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

    Returns:
      the display name
    Since:
      8.9

  - ### getGroup

    ProblemGroup getGroup()
    Returns the container group.
    Returns:
      the group
    Since:
      8.9