Skip to content

Commit

Permalink
Made fqcn-builtins rule implicit
Browse files Browse the repository at this point in the history
From now on, we will be requiring `fqcn-builtins` by default,
matching official Ansible guidelines as
documentation was already updated in that regard.
  • Loading branch information
ssbarnea committed Feb 22, 2022
1 parent 1c2f69d commit 84c3e60
Show file tree
Hide file tree
Showing 14 changed files with 6,979 additions and 44 deletions.
13 changes: 6 additions & 7 deletions .ansible-lint
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# and not relative to the CWD of execution. CLI arguments passed to the --exclude
# option will be parsed relative to the CWD of execution.
exclude_paths:
- .cache/ # implicit unless exclude_paths is defined in config
- .cache/ # implicit unless exclude_paths is defined in config
- .github/
# parseable: true
# quiet: true
Expand All @@ -17,8 +17,8 @@ mock_modules:
- fake_namespace.fake_collection.fake_module.fake_submodule
mock_roles:
- mocked_role
- author.role_name # old standalone galaxy role
- fake_namespace.fake_collection.fake_role # role within a collection
- author.role_name # old standalone galaxy role
- fake_namespace.fake_collection.fake_role # role within a collection

# Enable checking of loop variable prefixes in roles
loop_var_prefix: "{role}_"
Expand All @@ -41,9 +41,8 @@ skip_list:
# Any rule that has the 'opt-in' tag will not be loaded unless its 'id' is
# mentioned in the enable_list:
enable_list:
- fqcn-builtins # opt-in
- no-log-password # opt-in
- no-same-owner # opt-in
- no-log-password # opt-in
- no-same-owner # opt-in
# add yaml here if you want to avoid ignoring yaml checks when yamllint
# library is missing. Normally its absence just skips using that rule.
- yaml
Expand All @@ -55,7 +54,7 @@ enable_list:
warn_list:
- skip_this_tag
- git-latest
- experimental # experimental is included in the implicit list
- experimental # experimental is included in the implicit list
# - role-name

# Offline mode disables installation of requirements.yml
Expand Down
2 changes: 1 addition & 1 deletion examples/playbooks/valid_with_alt_extension.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Used to validate that we also accept .yaml extension on playbooks
- hosts: localhost
tasks:
- debug: # <-- should notify about missing 'name'
- ansible.builtin.debug: # <-- should notify about missing 'name'
msg: "hello!"
20 changes: 10 additions & 10 deletions examples/roles/role_for_no_same_owner/tasks/fail.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
- name: block
block:
- name: synchronize-in-block
synchronize:
ansible.posix.synchronize:
src: dummy
dest: dummy

- name: synchronize
synchronize:
ansible.posix.synchronize:
src: dummy
dest: dummy

- name: nested-block
block:
- block:
- name: synchronize-in-deep-block
synchronize:
ansible.posix.synchronize:
src: dummy
dest: dummy

- name: unarchive-bz2
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.tar.bz2"
dest: "dummy"

- name: unarchive delegated
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.tar.bz2"
dest: "dummy"
delegate_to: localhost

- name: unarchive-gz
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.tar.gz"
dest: "dummy"

- name: unarchive-tar
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.tar"
dest: "dummy"

- name: unarchive-xz
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.tar.xz"
dest: "dummy"

- name: unarchive-zip
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.zip"
dest: dummy
extra_opts:
- "-X"

- name: unarchive-zip-same-owner
unarchive:
ansible.builtin.unarchive:
src: "{{ file }}.zip"
dest: dummy
extra_opts:
Expand Down
3 changes: 2 additions & 1 deletion src/ansiblelint/rules/FQCNBuiltinsRule.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,13 @@

class FQCNBuiltinsRule(AnsibleLintRule):
id = "fqcn-builtins"
severity = "MEDIUM"
shortdesc = "Use FQCN for builtin actions"
description = (
"Check whether the long version starting with ``ansible.builtin`` "
"is used in the playbook"
)
tags = ["opt-in", "formatting", "experimental"]
tags = ["formatting"]

def matchtask(
self, task: Dict[str, Any], file: Optional[Lintable] = None
Expand Down
2 changes: 1 addition & 1 deletion test/TestRulesCollection.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,4 +158,4 @@ def test_rules_id_format() -> None:
assert rule_id_re.match(
rule.id
), f"Rule id {rule.id} did not match our required format."
assert len(rules) == 40
assert len(rules) == 41
1 change: 1 addition & 0 deletions test/eco/bootstrap.result
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WARNING Loading custom .yamllint config file, this extends our internal yamllint config.
136 changes: 131 additions & 5 deletions test/eco/colsystem.result
Original file line number Diff line number Diff line change
@@ -1,6 +1,132 @@
load-failure: [Errno 2] No such file or directory: '/Users/ssbarnea/.cache/ansible-lint-eco/colsystem/tests/ansible-lint.yml' (filenotfounderror)
.ansible-lint:1

yaml: line too long (576 > 160 characters) (line-length)
playbooks/molecule/sudo/molecule.yml:17
WARNING Listing 123 violation(s) that are fatal
.ansible-lint:1: load-failure [Errno 2] No such file or directory: '~/.cache/ansible-lint-eco/colsystem/tests/ansible-lint.yml' (filenotfounderror)
playbooks/molecule/dotfiles/prepare.yml:3: fqcn-builtins Use FQCN for builtin actions
playbooks/molecule/sudo/molecule.yml:17: yaml line too long (576 > 160 characters) (line-length)
playbooks/parts/desktop.yml:15: fqcn-builtins Use FQCN for builtin actions
roles/adblock/handlers/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:13: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:29: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:34: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:41: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:60: fqcn-builtins Use FQCN for builtin actions
roles/adblock/tasks/main.yml:68: fqcn-builtins Use FQCN for builtin actions
roles/common/tasks/main.yml:15: fqcn-builtins Use FQCN for builtin actions
roles/common/tasks/main.yml:23: fqcn-builtins Use FQCN for builtin actions
roles/common/tasks/main.yml:37: fqcn-builtins Use FQCN for builtin actions
roles/common/tasks/main.yml:50: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/default/prepare.yml:3: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/playbook.yml:5: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:5: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:11: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:16: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:24: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:30: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:48: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/molecule/local/prepare.yml:55: fqcn-builtins Use FQCN for builtin actions
roles/copy_or_link/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/dev/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/dev/tasks/main.yml:12: fqcn-builtins Use FQCN for builtin actions
roles/disable_deltarpm/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/disable_deltarpm/tasks/main.yml:5: fqcn-builtins Use FQCN for builtin actions
roles/disable_deltarpm/tasks/main.yml:10: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/molecule/shared/playbook.yml:4: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/tasks/01_shell.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/tasks/01_shell.yml:14: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/tasks/03_vim.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/tasks/03_vim.yml:25: fqcn-builtins Use FQCN for builtin actions
roles/dotfiles/tasks/03_vim.yml:32: fqcn-builtins Use FQCN for builtin actions
roles/epel/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/epel/tasks/main.yml:13: fqcn-builtins Use FQCN for builtin actions
roles/flatpak/molecule/shared/playbook.yml:4: fqcn-builtins Use FQCN for builtin actions
roles/k3s_base/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/k3s_base/tasks/main.yml:16: fqcn-builtins Use FQCN for builtin actions
roles/k3s_base/tasks/main.yml:27: fqcn-builtins Use FQCN for builtin actions
roles/k3s_base/tasks/main.yml:33: fqcn-builtins Use FQCN for builtin actions
roles/k3s_master/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/k3s_master/tasks/main.yml:16: fqcn-builtins Use FQCN for builtin actions
roles/k3s_master/tasks/main.yml:32: fqcn-builtins Use FQCN for builtin actions
roles/k3s_master/tasks/main.yml:38: fqcn-builtins Use FQCN for builtin actions
roles/k3s_worker/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/k3s_worker/tasks/main.yml:16: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/molecule/shared/playbook.yml:14: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:6: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:15: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:19: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:28: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:36: fqcn-builtins Use FQCN for builtin actions
roles/mariadb/tasks/main.yml:45: fqcn-builtins Use FQCN for builtin actions
roles/mirror/molecule/shared/playbook.yml:27: fqcn-builtins Use FQCN for builtin actions
roles/mirror/molecule/shared/playbook.yml:32: fqcn-builtins Use FQCN for builtin actions
roles/mirror/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/mirror/tasks/mirror.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/mirror/tasks/mirror.yml:10: fqcn-builtins Use FQCN for builtin actions
roles/mounts/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/mounts/tasks/mount.yml:12: fqcn-builtins Use FQCN for builtin actions
roles/mta/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/mta/tasks/main.yml:9: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/handlers/main.yml:10: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/handlers/main.yml:20: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/handlers/main.yml:27: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/tasks/main.yml:10: fqcn-builtins Use FQCN for builtin actions
roles/mythtv/tasks/main.yml:34: fqcn-builtins Use FQCN for builtin actions
roles/packages_server/tasks/main.yml:2: fqcn-builtins Use FQCN for builtin actions
roles/packages_server/tasks/main.yml:13: fqcn-builtins Use FQCN for builtin actions
roles/packages_server/tasks/main.yml:22: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Darwin/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/01_cli.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/01_cli.yml:7: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/01_cli.yml:14: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/01_cli.yml:22: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/01_cli.yml:31: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/02_virtualenv.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:3: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:9: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:17: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:27: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:36: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:44: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:52: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:57: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:64: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:69: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:75: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/03_libvirt.yml:81: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/04_packer.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/05_kerberos.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/05_kerberos.yml:14: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:9: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:18: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:23: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:30: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/06_blu_ray.yml:36: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/Linux/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/packages_workstation/tasks/main.yml:7: fqcn-builtins Use FQCN for builtin actions
roles/python_prep/molecule/shared/playbook.yml:6: fqcn-builtins Use FQCN for builtin actions
roles/python_prep/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/toolbox/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/toolbox/tasks/main.yml:34: fqcn-builtins Use FQCN for builtin actions
roles/webserver/handlers/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/letsencrypt.yml:36: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/letsencrypt.yml:48: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:1: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:8: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:12: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:18: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:27: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:37: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:49: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:61: fqcn-builtins Use FQCN for builtin actions
roles/webserver/tasks/main.yml:76: fqcn-builtins Use FQCN for builtin actions
You can skip specific rules or tags by adding them to your configuration file:
# .ansible-lint
warn_list: # or 'skip_list' to silence them completely
- fqcn-builtins # Use FQCN for builtin actions
- load-failure # Failed to load or parse file
- yaml # Violations reported by yamllint

Finished with 123 failure(s), 0 warning(s) on 301 files.

0 comments on commit 84c3e60

Please sign in to comment.