Update build to handle documentation issues being errors

Previously, documentation issues had `lint` severity (which was between
`warning` and `hide`) by default. However, a recent change in Metalava
switched documentation issues to `error`. That broke some `droidstubs`
modules that either did not specify `api_lint` or were previously allow
listed to not use `--lints-as-errors`.

This change adds `--error-when-new-category Documentation` to the
Metalava arguments on any use of `droidstubs` that did not previously
specify `--lints-as-errors` to prevent the build breakage while still
warning developers of the problem and preventing new cases being added.

Bug: 343157584
Test: ./gradlew
Change-Id: Id80bc05e2dade580b2f3ac6416aeeed6b64ba22a
This commit is contained in:
Paul Duffin 2024-05-28 17:27:22 +01:00
parent 585564cab2
commit baf34783a4

View file

@ -993,6 +993,7 @@ func (d *Droidstubs) everythingStubCmd(ctx android.ModuleContext, params stubsCo
func (d *Droidstubs) everythingOptionalCmd(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, doApiLint bool, doCheckReleased bool) { func (d *Droidstubs) everythingOptionalCmd(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, doApiLint bool, doCheckReleased bool) {
// Add API lint options. // Add API lint options.
treatDocumentationIssuesAsErrors := false
if doApiLint { if doApiLint {
var newSince android.Paths var newSince android.Paths
if d.properties.Check_api.Api_lint.New_since != nil { if d.properties.Check_api.Api_lint.New_since != nil {
@ -1006,7 +1007,7 @@ func (d *Droidstubs) everythingOptionalCmd(ctx android.ModuleContext, cmd *andro
// TODO(b/154317059): Clean up this allowlist by baselining and/or checking in last-released. // TODO(b/154317059): Clean up this allowlist by baselining and/or checking in last-released.
if d.Name() != "android.car-system-stubs-docs" && if d.Name() != "android.car-system-stubs-docs" &&
d.Name() != "android.car-stubs-docs" { d.Name() != "android.car-stubs-docs" {
cmd.Flag("--lints-as-errors") treatDocumentationIssuesAsErrors = true
cmd.Flag("--warnings-as-errors") // Most lints are actually warnings. cmd.Flag("--warnings-as-errors") // Most lints are actually warnings.
} }
@ -1052,6 +1053,11 @@ func (d *Droidstubs) everythingOptionalCmd(ctx android.ModuleContext, cmd *andro
cmd.FlagWithArg("--error-message:api-lint ", msg) cmd.FlagWithArg("--error-message:api-lint ", msg)
} }
if !treatDocumentationIssuesAsErrors {
// Treat documentation issues as warnings, but error when new.
cmd.Flag("--error-when-new-category").Flag("Documentation")
}
// Add "check released" options. (Detect incompatible API changes from the last public release) // Add "check released" options. (Detect incompatible API changes from the last public release)
if doCheckReleased { if doCheckReleased {
baselineFile := android.OptionalPathForModuleSrc(ctx, d.properties.Check_api.Last_released.Baseline_file) baselineFile := android.OptionalPathForModuleSrc(ctx, d.properties.Check_api.Last_released.Baseline_file)