== Why is this an issue?

The actions performed by a task are often too complex or specific,
and the task name cannot describe the task's action sufficiently well.
Moreover, build scripts usually consist of many tasks - whether explicitly defined or implicitly by the applied plugins -
so a structure is required to help the user navigate through existing tasks.

Therefore, tasks should define a `description` and `group` to provide documentation and categorization for the user.

=== What is the potential impact?

==== Improve task discoverability

Users can find tasks easier and understand their purpose if they contain a description and are grouped into categories.

== How to fix it

Assign the `description` and `group` properties in your task configuration.

=== Code examples

==== Noncompliant code example

[source,kotlin,diff-id=1,diff-type=noncompliant]
----
tasks.register<DocsGenerate>("generateHtmlDocs") { // Noncompliant, does neither define "description" and "group"
    title.set("Project docs")
    outputDir.set(layout.buildDirectory.dir("docs"))
}
----

==== Compliant solution

[source,kotlin,diff-id=1,diff-type=compliant]
----
tasks.register<DocsGenerate>("generateHtmlDocs") { // Compliant, defines "description" and "group"
    description = "Generates the HTML documentation for this project."
    group = JavaBasePlugin.DOCUMENTATION_GROUP
    title.set("Project docs")
    outputDir.set(layout.buildDirectory.dir("docs"))
}
----

== Resources

=== Documentation

* https://docs.gradle.org/current/userguide/authoring_maintainable_build_scripts.html#sec:improving_task_discoverability[Gradle Documentation - Improve task discoverability]
