agentflow / rules.md
sushiwill's picture
Upload 10 files
4eca3c8 verified
|
raw
history blame
23.8 kB
# 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 |