Udostępnij za pośrednictwem


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).