Reguła lintera — zwarcie warunkowe
Ta reguła wykrywa, kiedy wartości środowiska uruchomieniowego są przekazywane jako parametry do modułów, które z kolei używają ich do określania identyfikatorów zasobów (na przykład gdy parametr jest używany do określania nazwy, identyfikatora subskrypcji, grupy zasobów, warunku, zakresu lub apiVersion co najmniej jednego zasobu w module) i flaguje potencjalne zwarcie warunkowe.
Uwaga
Ta reguła jest domyślnie wyłączona, zmień poziom w bicepconfig.json , aby ją włączyć.
Kod reguły Linter
Użyj następującej wartości w pliku konfiguracji Bicep, aby dostosować ustawienia reguły:
what-if-short-circuiting
Rozwiązanie
Ta reguła sprawdza wartości środowiska uruchomieniowego używane do określania identyfikatorów zasobów w modułach. Informuje o tym, czy kod Bicep może spowodować zwarcie warunkowe. W poniższym przykładzie appServiceOutputs i appServiceTests będą oflagowane na potrzeby zwarcia warunkowego, ponieważ przekazują wartości środowiska uruchomieniowego jako parametry do modułu, który używa ich podczas nazewnictwa zasobu:
main.bicep
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'storageAccountName'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
module appServiceModule 'modules/appService.bicep' = {
name: 'appService2'
params: {
appServiceName: 'test'
}
}
module appServiceOutputs 'modules/appService.bicep' = {
name: 'appService3'
params: {
appServiceName: appServiceModule.outputs.outputName
}
}
module appServiceTest 'modules/appService.bicep' = {
name:'test3'
params: {
appServiceName: storageAccount.properties.accessTier
}
}
modules/appService.bicep
param appServiceName string
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceName
location: 'eastus'
properties: {
httpsOnly: true
}
}
output outputName string = 'outputName'
Aby uniknąć tego problemu, użyj stałych czasu wdrożenia dla wartości używanych podczas określania identyfikatorów zasobów.
Następne kroki
Aby uzyskać więcej informacji na temat lintera, zobacz Use Bicep linter (Używanie lintera Bicep).