Compartir a través de


Regla linter: cortocircuito hipotérico

Esta regla detecta cuándo se pasan valores en tiempo de ejecución como parámetros a los módulos, que a su vez los usan para determinar los identificadores de recursos (por ejemplo, cuando se usa el parámetro para determinar el nombre, subscriptionId, resourceGroup, condición, ámbito o apiVersion de uno o varios recursos dentro del módulo) y marca posibles errores de cortocircuito.

Nota:

Esta regla está desactivada de forma predeterminada, cambie el nivel de bicepconfig.json para habilitarla.

Código de regla de linter

Use el valor siguiente del archivo de configuración de Bicep para personalizar los valores de regla:

what-if-short-circuiting

Solución

Esta regla comprueba si hay valores en tiempo de ejecución que se usan para determinar los identificadores de recursos dentro de los módulos. Le avisa si el código de Bicep podría provocar un cortocircuito. En el ejemplo siguiente, appServiceOutputs y appServiceTests se marcarían para el cortocircuito what-if porque pasan valores en tiempo de ejecución como parámetros al módulo, que los usa al asignar un nombre al 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 este problema, use constantes en tiempo de implementación para los valores que se usan para determinar los identificadores de recursos.

Pasos siguientes

Para obtener más información acerca de linter, consulte Uso de linter de Bicep.