Partager via


Règle Linter - court-circuitage de what-if

Cette règle détecte quand les valeurs d’exécution sont passées en tant que paramètres aux modules, qui à leur tour les utilisent pour déterminer les ID de ressource (par exemple, lorsque le paramètre est utilisé pour déterminer le nom, subscriptionId, resourceGroup, condition, étendue ou apiVersion d’une ou plusieurs ressources dans le module) et signale le risque de court-circuitage.

Remarque

Cette règle est désactivée par défaut, modifiez le niveau dans bicepconfig.json pour l’activer.

Code de règle de linter

Utilisez la valeur suivante dans le fichier config Bicep pour personnaliser les paramètres de règle :

what-if-short-circuiting

Solution

Cette règle vérifie les valeurs d’exécution utilisées pour déterminer les ID de ressource dans les modules. Il vous avertit si votre code Bicep peut entraîner un court-circuiting de type if. Dans l’exemple ci-dessous, appServiceOutputs et appServiceTests sont marqués pour le court-circuitage des scénarios, car ils transmettent des valeurs d’exécution en tant que paramètres au module, qui les utilise lors de l’affectation d’un nom à la ressource :

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'

Pour éviter ce problème, utilisez des constantes de temps de déploiement pour les valeurs utilisées pour déterminer les ID de ressource.

Étapes suivantes

Pour plus d’informations sur le linter, consultez Utiliser le linter Bicep.