Private/Test-PlumberFunctionHelp.ps1

function Test-PlumberFunctionHelp {
    <#
        .SYNOPSIS
        Tests function help metadata for required sections.

        .DESCRIPTION
        Validates parsed function help metadata and returns messages for any
        missing required help sections.

        .PARAMETER Help
        The parsed help metadata to validate.

        .PARAMETER RequireFullHelp
        Require description, parameters and examples in addition to synopsis.

        .EXAMPLE
        Test-PlumberFunctionHelp -Help $help -RequireFullHelp

        Returns missing help section messages for a public function.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param (
        [Parameter(Mandatory)]
        [pscustomobject]
        $Help,

        [switch]
        $RequireFullHelp
    )

    # PowerShell's GetHelpContent() falls back to the function name when no
    # .SYNOPSIS is present, so a synopsis equal to the name means the author
    # never wrote one. Treat that as missing.
    if (
        -not $Help.Synopsis -or
        $Help.Synopsis -eq $Help.Name
    ) {
        "$($Help.Name): Missing help synopsis"
    }

    if (-not $RequireFullHelp) {
        return
    }

    if (-not $Help.Description) {
        "$($Help.Name): Missing help description"
    }

    if ($Help.HasParameter -and -not $Help.Parameters) {
        "$($Help.Name): Missing help parameter documentation"
    }

    if (-not $Help.Examples) {
        "$($Help.Name): Missing help example"
    }
}