在 Bicep 設定檔中新增 Linter 設定

bicepconfig.json 檔案中,您可以自訂 Bicep Linter 的驗證設定。 Linter 會在評估您的 Bicep 檔案時使用這些設定,以獲得最佳做法。

本文描述適用於使用 Bicep Linter 的設定。

自訂 Linter

Linter 設定可在 analyzers 元素下取得。 您可以啟用或停用 Linter、提供規則特定值,以及設定規則的層級。

下列範例顯示可供設定的規則。

{
  "analyzers": {
    "core": {
      "enabled": true,
      "rules": {
        "adminusername-should-not-be-literal": {
          "level": "warning"
        },
        "artifacts-parameters": {
          "level": "warning"
        },
        "decompiler-cleanup": {
          "level": "warning"
        },
        "explicit-values-for-loc-params": {
          "level": "off"
        },
        "max-asserts": {
          "level": "warning"
        },
        "max-outputs": {
          "level": "warning"
        },
        "max-params": {
          "level": "warning"
        },
        "max-resources": {
          "level": "warning"
        },
        "max-variables": {
          "level": "warning"
        },
        "nested-deployment-template-scoping": {
          "level": "error"
        },
        "no-conflicting-metadata" : {
          "level": "warning"
        },
        "no-deployments-resources" : {
          "level": "warning"
        },
        "no-hardcoded-env-urls": {
          "level": "warning"
        },
        "no-hardcoded-location": {
          "level": "off"
        },
        "no-loc-expr-outside-params": {
          "level": "off"
        },
        "no-unnecessary-dependson": {
          "level": "warning"
        },
        "no-unused-existing-resources": {
          "level": "warning"
        },
        "no-unused-params": {
          "level": "warning"
        },
        "no-unused-vars": {
          "level": "warning"
        },
        "outputs-should-not-contain-secrets": {
          "level": "warning"
        },
        "prefer-interpolation": {
          "level": "warning"
        },
        "prefer-unquoted-property-names": {
          "level": "warning"
        },
        "protect-commandtoexecute-secrets": {
          "level": "warning"
        },
        "secure-parameter-default": {
          "level": "warning"
        },
        "secure-params-in-nested-deploy": {
          "level": "warning"
        },
        "secure-secrets-in-params": {
          "level": "warning"
        },
        "simplify-interpolation": {
          "level": "warning"
        },
        "simplify-json-null": {
          "level": "warning"
        },
        "use-parent-property": {
          "level": "warning"
        },
        "use-recent-api-versions": {
          "level": "warning",
          "maxAllowedAgeInDays": 730
        },
        "use-resource-id-functions": {
          "level": "warning"
        },
        "use-resource-symbol-reference": {
          "level": "warning"
        },
        "use-secure-value-for-secure-inputs": {
          "level": "error"
        },
        "use-stable-resource-identifiers": {
          "level": "warning"
        },
        "use-stable-vm-image": {
          "level": "warning"
        }
      }
    }
  }
}

屬性如下︰

  • enabled:指定 true 表示啟用 Linter,false 表示停用 Linter。
  • verbose:指定 true 以顯示 Visual Studio Code 所使用的 bicepconfig.json 檔案。
  • rules:指定規則特定的值。 每個規則都有一個層級,可決定在找到違規時,Linter 的回應方式。

層級的可用值為:

level 編譯時間行為 編輯器行為
Error 違規會在命令列編譯輸出中顯示為錯誤,並導致編譯失敗。 違規的程式碼會加上紅色波浪線,並在 [問題] 索引標籤中顯示。
Warning 違規會在命令列編譯輸出中顯示為警告,但不會導致編譯失敗。 違規的程式碼會加上黃色波浪線,並在 [問題] 索引標籤中顯示。
Info 違規不會在命令列編譯輸出中顯示。 違規的程式碼會加上藍色波浪線,並在 [問題] 索引標籤中顯示。
Off 已完全隱藏。 已完全隱藏。

環境 URL

如需有關硬式編碼環境 URL 的規則,您可以自訂要檢查的 URL。 預設會套用下列設定:

{
  "analyzers": {
    "core": {
      "enabled": true,
      "rules": {
        "no-hardcoded-env-urls": {
          "level": "warning",
          "disallowedhosts": [
            "api.loganalytics.io",
            "api.loganalytics.iov1",
            "asazure.windows.net",
            "azuredatalakeanalytics.net",
            "azuredatalakestore.net",
            "batch.core.windows.net",
            "core.windows.net",
            "database.windows.net",
            "datalake.azure.net",
            "gallery.azure.com",
            "graph.windows.net",
            "login.microsoftonline.com",
            "management.azure.com",
            "management.core.windows.net",
            "region.asazure.windows.net",
            "trafficmanager.net",
            "vault.azure.net"
          ],
          "excludedhosts": [
            "schema.management.azure.com"
          ]
        }
      }
    }
  }
}

下一步