Spaces:
Running
on
A10G
Running
on
A10G
| # Linter Rules | |
| This document is automatically published on [GitHub pages](http://mozilla.github.io/addons-linter/). To update it edit `docs/rules.md` in the [GitHub repo](https://github.com/mozilla/addons-linter). | |
| Rules are sorted by severity. | |
| ## JavaScript | |
| | Message code | Severity | Description | | |
| | --------------------------- | -------- | -------------------------------------------------------------------------------------- | | |
| | `KNOWN_LIBRARY` | notice | This is version of a JS library is known and generally accepted. | | |
| | `OPENDIALOG_NONLIT_URI` | notice | openDialog called with non-literal parameter. | | |
| | `UNEXPECTED_GLOBAL_ARG` | warning | Unexpected global passed as an argument. | | |
| | `NO_IMPLIED_EVAL` | warning | disallow the use of `eval()`-like methods. | | |
| | `OPENDIALOG_REMOTE_URI` | warning | openDialog called with non-local URI. | | |
| | `NO_DOCUMENT_WRITE` | warning | Use of `document.write` strongly discouraged. | | |
| | `JS_SYNTAX_ERROR` | warning | JavaScript compile-time error. | | |
| | `UNADVISED_LIBRARY` | warning | This version of a JS library is not recommended. | | |
| | `DEPRECATED_API` | warning | API is deprecated. | | |
| | `STORAGE_SYNC` | warning | Temporary IDs can cause issues with `storage.sync`. | | |
| | `STORAGE_MANAGED` | warning | Temporary IDs can cause issues with `storage.managed`. | | |
| | `IDENTITY_GETREDIRECTURL` | warning | Temporary IDs can cause issues with `identity.getRedirectURL`. | | |
| | `RUNTIME_ONMESSAGEEXTERNAL` | warning | Temporary IDs can cause issues with `runtime.onMessageExternal`. | | |
| | `RUNTIME_ONCONNECTEXTERNAL` | warning | Temporary IDs can cause issues with `runtime.onConnectExternal`. | | |
| | `BANNED_LIBRARY` | error | This version of a JS library is banned for security reasons. | | |
| | `INCOMPATIBLE_API` | warning | API not compatible with `applications.gecko.strict_min_version` | | |
| | `ANDROID_INCOMPATIBLE_API` | warning | API not compatible with Firefox for Android at `applications.gecko.strict_min_version` | | |
| ## Markup | |
| ### HTML | |
| | Message code | Severity | Description | | |
| | --------------- | -------- | ------------------------------------------------------ | | |
| | `INLINE_SCRIPT` | warning | Inline script is disallowed by CSP. | | |
| | `REMOTE_SCRIPT` | warning | Remote scripts are not allowed as per Add-on Policies. | | |
| ## Content | |
| | Message code | Severity | Description | | |
| | -------------- | -------- | ----------------------- | | |
| | `HIDDEN_FILE` | warning | Hidden file flagged. | | |
| | `FLAGGED_FILE` | warning | Flagged filename found. | | |
| ## Package layout | |
| | Message code | Severity | Description | | |
| | -------------------------- | -------- | -------------------------------------------------------------------------------- | | |
| | `MOZILLA_COND_OF_USE` | notice | Mozilla conditions of use violation. | | |
| | `FLAGGED_FILE_TYPE` | notice | (Binary) Flagged file type found. | | |
| | `FLAGGED_FILE_EXTENSION` | warning | Flagged file extensions found | | |
| | `ALREADY_SIGNED` | warning | Already signed | | |
| | `COINMINER_USAGE_DETECTED` | warning | Firefox add-ons are not allowed to run coin miners. | | |
| | `DUPLICATE_XPI_ENTRY` | error | Package contains duplicate entries. | | |
| | `INVALID_XPI_ENTRY` | error | Package contains invalid entries (e.g. invalid characters in entries path name). | | |
| | `BAD_ZIPFILE` | error | Bad zip file. | | |
| | `FILE_TOO_LARGE` | error | File is too large to parse | | |
| | `RESERVED_FILENAME` | error | Reserved filename detected. | | |
| ## Type detection | |
| | Message code | Severity | Description | | |
| | ----------------------- | -------- | ------------------------------------------------ | | |
| | `TYPE_NO_MANIFEST_JSON` | notice | Add-on missing manifest_json for type detection. | | |
| ## Language packs | |
| | Message code | Severity | Description | | |
| | ---------------- | -------- | ----------------------------- | | |
| | `FLUENT_INVALID` | warning | Invalid fluent template file. | | |
| ## Web Extensions / manifest.json | |
| | Message code | Severity | Description | | |
| | ------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | |
| | `MANIFEST_UNUSED_UPDATE` | notice | update_url ignored in manifest.json | | |
| | `CORRUPT_ICON_FILE` | warning | Icons must not be corrupt | | |
| | `MANIFEST_CSP` | warning | content_security_policy in manifest.json means more review | | |
| | `MANIFEST_CSP_UNSAFE_EVAL` | warning | usage of 'unsafe-eval' is strongly discouraged | | |
| | `MANIFEST_PERMISSIONS` | warning | Unknown permission | | |
| | `MANIFEST_OPTIONAL_PERMISSIONS` | warning | Unknown optional permission | | |
| | `MANIFEST_HOST_PERMISSIONS` | warning | Unknown host permission | | |
| | `NO_MESSAGES_FILE` | warning | When default_locale is specified a matching messages.json must exist | | |
| | `NO_DEFAULT_LOCALE` | warning | When \_locales directory exists, default_locale must exist | | |
| | `UNSAFE_VAR_ASSIGNMENT` | warning | Assignment using dynamic, unsanitized values | | |
| | `UNSUPPORTED_API` | warning | Unsupported or unknown browser API | | |
| | `DANGEROUS_EVAL` | warning | `eval` and the `Function` constructor are discouraged | | |
| | `STRICT_MAX_VERSION` | warning | strict_max_version not required | | |
| | `PREDEFINED_MESSAGE_NAME` | warning | String name is reserved for a predefined | | |
| | `MISSING_PLACEHOLDER` | warning | Placeholder for message is not | | |
| | `MANIFEST_FIELD_PRIVILEGEDONLY` | warning | A manifest field ignored on non-privileged extensions | | |
| | `MANIFEST_FIELD_UNSUPPORTED` | warning | A manifest field is not supported (or not supported for the extension manifest_version) | | |
| | `MANIFEST_PERMISSION_UNSUPPORTED` | warning | A manifest permission is not supported for the extension manifest_version | | |
| | `MANIFEST_PERMISSIONS_PRIVILEGED` | error | A manifest permission is only allowed in privileged extensions | | |
| | `MOZILLA_ADDONS_PERMISSION_REQUIRED` | error | The "mozillaAddons" permission must be specified in privileged extensions | | |
| | `PRIVILEGED_FEATURES_REQUIRED` | error | Privileged features are mandatory for privileged extensions, but none has been detected | | |
| | `MANIFEST_FIELD_PRIVILEGED` | error | A manifest field is only allowed in privileged extensions | | |
| | `WRONG_ICON_EXTENSION` | error | Icons must have valid extension | | |
| | `MANIFEST_UPDATE_URL` | error | update_url not allowed in manifest.json | | |
| | `MANIFEST_FIELD_REQUIRED` | error | A required field is missing | | |
| | `MANIFEST_FIELD_INVALID` | error | A field is invalid | | |
| | `MANIFEST_FIELD_DEPRECATED` | error | A field is deprecated | | |
| | `MANIFEST_BAD_PERMISSION` | error | Bad permission | | |
| | `MANIFEST_BAD_OPTIONAL_PERMISSION` | error | Bad optional permission | | |
| | `MANIFEST_BAD_HOST_PERMISSION` | error | Bad host permission | | |
| | `MANIFEST_INSTALL_ORIGINS` | error | Invalid install_origins | | |
| | `JSON_BLOCK_COMMENTS` | error | Block Comments are not allowed in JSON | | |
| | `MANIFEST_INVALID_CONTENT` | error | This add-on contains forbidden content | | |
| | `CONTENT_SCRIPT_NOT_FOUND` | error | Content script file could not be found | | |
| | `CONTENT_SCRIPT_EMPTY` | error | Content script file name should not be empty | | |
| | `NO_MESSAGE` | error | Translation string is missing the message | | |
| | `INVALID_MESSAGE_NAME` | error | String name contains invalid characters | | |
| | `INVALID_PLACEHOLDER_NAME` | error | Placeholder name contains invalid characters | | |
| | `NO_PLACEHOLDER_CONTENT` | error | Placeholder is missing the content | | |
| | `JSON_INVALID` | error | JSON is not well formed | | |
| | `JSON_DUPLICATE_KEY` | error | Duplicate key in JSON | | |
| | `MANIFEST_VERSION_INVALID` | error | manifest_version in manifest.json is not valid | | |
| | `PROP_NAME_MISSING` | error | The name property is missing from manifest.json | | |
| | `PROP_NAME_INVALID` | error | The name property is invalid in manifest.json, either because the string has leading/trailing whitespaces or because its length is too short (must be 2 non-whitespace characters) | | |
| | `MANIFEST_DICT_NOT_FOUND` | error | A dictionary file defined in the manifest could not be found | | |
| | `MANIFEST_MULTIPLE_DICTS` | error | Multiple dictionaries found | | |
| | `MANIFEST_EMPTY_DICTS` | error | Empty `dictionaries` object | | |
| | `MANIFEST_DICT_MISSING_ID` | error | Missing `applications.gecko.id` property for a dictionary | | |
| | `KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION` | warning | Manifest key not compatible with `applications.gecko.strict_min_version` | | |
| | `KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION` | warning | Manifest key not compatible with Firefox for Android at `applications.gecko.strict_min_version` | | |
| | `PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION` | notice | Permission not compatible with `applications.gecko.strict_min_version` | | |
| | `PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION` | notice | Permission not compatible with Firefox for Android at `applications.gecko.strict_min_version` | | |
| | `IGNORED_APPLICATIONS_PROPERTY` | warning | Usage of both `applications` and `browser_specific_settings` properties | | |
| | `RESTRICTED_HOMEPAGE_URL` | error | Linking to addons.mozilla.org in `homepage_url` or `developer.url` is not allowed | | |
| | `RESTRICTED_PERMISSION` | error | A permission requires "strict_min_version" to be set to a specific Firefox version | | |
| | `EXTENSION_ID_REQUIRED` | error | The extension ID is mandatory for Manifest Version 3 (and above) extensions | | |
| | `HIDDEN_NO_ACTION` | error | The `hidden` and `browser_action`/`page_action` (or `action`) properties are mutually exclusive | | |
| | `APPLICATIONS_DEPRECATED` | warning | The `applications` property in the manifest is deprecated and will no longer be accepted in Manifest Version 3 and above. Use `browser_specific_settings` instead. | | |
| | `APPLICATIONS_INVALID` | error | The `applications` property is no longer accepted in Manifest Version 3 and above | | |
| | `VERSION_FORMAT_DEPRECATED` | warning | The version string should be simplified | | |
| | `VERSION_FORMAT_INVALID` | error | The version string is not valid because its format is too complex. | | |
| | `INCOGNITO_SPLIT_UNSUPPORTED` | warning | The incognito "split" value is unsupported in Firefox | | |
| | `ADMIN_INSTALL_ONLY_PROP_RESERVED` | error | The `browser_specific_settings.gecko.admin_install_only` property is reserved and can only be used in enterprise add-ons | | |
| | `ADMIN_INSTALL_ONLY_REQUIRED` | error | The `browser_specific_settings.gecko.admin_install_only` property must be set to "true" in an enterprise add-on | | |
| | `DATA_COLLECTION_PERMISSIONS_PROP_RESERVED` | error | The `browser_specific_settings.gecko.data_collection_permissions` property is reserved for future usage and cannot be used in an extension at the moment | | |
| | `MISSING_DATA_COLLECTION_PERMISSIONS` | notice | The `browser_specific_settings.gecko.data_collection_permissions` will be required in the future. Please add this key to the manifest | | |
| | `NONE_DATA_COLLECTION_IS_EXCLUSIVE` | error | "none" must not be specified with other required data collection permissions | | |
| ### Static Theme / manifest.json | |
| | Message code | Severity | Description | | |
| | ------------------------------------ | -------- | ----------------------------------------------------------- | | |
| | `MANIFEST_THEME_IMAGE_MIME_MISMATCH` | warning | Theme image file extension should match its mime type | | |
| | `MANIFEST_THEME_IMAGE_NOT_FOUND` | error | Theme images must not be missing | | |
| | `MANIFEST_THEME_IMAGE_CORRUPTED` | error | Theme images must not be corrupted | | |
| | `MANIFEST_THEME_IMAGE_WRONG_EXT` | error | Theme images must have one of the supported file extensions | | |
| | `MANIFEST_THEME_IMAGE_WRONG_MIME` | error | Theme images mime type must be a supported format | | |
| | `MANIFEST_THEME_LWT_ALIAS` | error | Theme LWT aliases are deprecated | | |