Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa regola trova dichiarazioni di output che utilizzano valori letterali codificati rigidamente invece delle variabili esportate.
Annotazioni
Questa regola è disattivata di default. Cambia il livello inbicepconfig.json per attivarlo.
Codice regola Linter
Usare il valore seguente nel file di configurazione Bicep per personalizzare le impostazioni delle regole:
no-hardcoded-outputs
Soluzione
Quando un output restituisce una costante codificata in modo rigido — invece di un valore calcolato o a tempo di esecuzione — quella costante è meglio espressa come una variabile esportata. Le variabili esportate possono essere importate direttamente da altri file Bicep, rendendo l'intento più chiaro ed evitando implementazioni inutili solo per recuperare un valore fisso.
I seguenti tipi di valori di output attivano questa regola: letterali stringa, letterali interi, letterali booleani, nulli, array e oggetti dove ogni elemento è un valore letterale.
Gli output che fanno riferimento ai parametri, usano interpolazione di stringhe con un parametro o chiamano funzioni non attivano questa regola.
Il seguente esempio fallisce questo test perché l'output restituisce un letterale di stringa:
output apiVersion string = '2024-01-01'
Puoi risolvere sostituendo l'output con una variabile esportata:
@export()
var apiVersion = '2024-01-01'
Anche il seguente esempio fallisce questo test perché ogni elemento nell'array e ogni valore di proprietà nell'oggetto è un letterale:
param name string
output stringValue string = 'literal'
output intValue int = 42
output boolValue bool = true
output arrayValue array = [
'one'
2
]
output objectValue object = {
first: 'one'
nested: [
false
]
}
Puoi risolvere questi problemi convertendo ogni output in una variabile esportata:
@export()
var stringValue = 'literal'
@export()
var intValue = 42
@export()
var boolValue = true
@export()
var arrayValue = [
'one'
2
]
@export()
var objectValue = {
first: 'one'
nested: [
false
]
}
Il seguente esempio supera questo test perché gli output fanno riferimento ai parametri o usano espressioni:
param name string
output reference string = name
output interpolated string = 'literal-${name}'
output functionResult string = toLower('LITERAL')
output arrayWithExpression array = [
'literal'
name
]
output objectWithExpression object = {
literal: 'literal'
reference: name
}
Usa Quick Fix per creare automaticamente una variabile esportata con lo stesso nome e rimuovere l'output codificato fisso. Se il nome della variabile è in conflitto con una dichiarazione esistente, la soluzione rapida aggiunge un numero al nome della variabile.
Importare costanti esportate da altri file
Una volta convertito un output codificato in una variabile esportata, altri file Bicep possono importarlo direttamente usando l'istruzioneimport. Questo evita di dover distribuire il modulo solo per leggere un valore costante.
Il seguente esempio definisce costanti in un file condiviso constants.bicep :
// constants.bicep
@export()
var apiVersion = '2024-01-01'
@export()
var maxRetries = 3
Un altro file Bicep può importare direttamente quelle costanti:
import { apiVersion, maxRetries } from './constants.bicep'
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-01-01' = {
name: 'mystorageaccount'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
properties: {
minimumTlsVersion: 'TLS1_2'
}
tags: {
apiVersion: apiVersion
}
}
Per ulteriori informazioni, vedi Importa tipi di dati definiti dall'utente, variabili e funzioni.
Passaggi successivi
Per ulteriori informazioni su linter, vedere Usare linter di Bicep.