Partilhar via


Regra de Linter - curto-circuito hipotético

Esta regra deteta quando os valores de tempo de execução 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, scope ou apiVersion de um ou mais recursos dentro do módulo) e sinaliza possíveis curto-circuitos hipotéticos.

Nota

Esta regra está desativada por padrão, altere o nível em bicepconfig.json para habilitá-la.

Código da regra de linha

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

what-if-short-circuiting

Solução

Esta regra verifica os valores de tempo de execução usados para determinar IDs de recursos dentro dos módulos. Ele alerta se o seu código Bicep pode causar curto-circuito. No exemplo abaixo, appServiceOutputs e appServiceTests seriam sinalizados para curto-circuito hipotético porque passam valores de tempo de execução 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
  }
}

módulos/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 que são usados na determinação de IDs de recurso.

Próximos passos

Para obter mais informações sobre o linter, consulte Usar binter linter.