Compartilhar via


Regra de Linter - hipotético curto-circuito

Essa regra detecta quando os valores de runtime são passados como parâmetros para módulos, que, por sua vez, os usam para determinar IDs de recursos (como quando o parâmetro é usado para determinar o nome, subscriptionId, resourceGroup, condition, escopo ou apiVersion de um ou mais recursos dentro do módulo) e sinaliza possíveis curtos-circuitos hipotéticos.

Observação

Essa regra está desativada por padrão. Altere o nível em bicepconfig.json para habilitá-la.

Código de regra linter

Use o seguinte valor no arquivo de configuração Bicep para personalizar as configurações de regra:

what-if-short-circuiting

Solução

Essa regra verifica os valores de tempo de execução usados para determinar IDs de recursos dentro dos módulos. Ele alerta se o código do Bicep pode causar um curto-circuito hipotético. No exemplo abaixo, appServiceOutputs e appServiceTests seriam sinalizados para curto-circuito hipotético porque eles passam valores de runtime como parâmetros para o módulo, que os usa ao nomear o recurso:

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'

Para evitar esse problema, use constantes de tempo de implantação para valores usados na determinação de IDs de recursos.

Próximas etapas

Para saber mais sobre o linter, confira Usar o linter do Bicep.