跳转到主要内容

用于在pre-commit-config.yml文件中使用的odoo-pre-commit-hooks

项目描述

Build Status codecov version wheel supported-versions commits-since code-style-black

odoo-pre-commit-hooks

OCA为Odoo模块定制的预提交钩子

安装

您无需直接安装,只需配置您的".pre-commit-config.yaml"文件即可

您甚至可以直接安装

  • 从PyPI安装

    • pip install -U oca-odoo-pre-commit-hooks
  • 从GitHub安装

    • pip install --force-reinstall -U git+https://github.com/OCA/odoo-pre-commit-hooks.git@main

使用pre-commit-config.yaml

将以下输入添加到您的".pre-commit-config.yaml"配置文件中

    - repo: https://github.com/OCA/odoo-pre-commit-hooks
        rev: v0.0.33
        hooks:
        - id: oca-checks-odoo-module
        - id: oca-checks-po
          args: ["--fix"]

直接使用入口点

如果您直接安装了包,请使用入口点

oca-checks-odoo-module --help
oca-checks-po --help

跳过一个xml-check仅针对一个文件

如果您需要在特定的XML文件中跳过一项检查,可以使用以下注释:

<?xml version="1.0" encoding="utf-8"?>
<!-- oca-hooks:disable=xml-check-to-skip -->
<odoo>
...
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<!-- oca-hooks:disable=xml-check-to-skip,
                       xml-check-to-skip2 -->
<odoo>
...
</odoo>

注释的位置与引发检查的行不相关

它将禁用整个文件

配置

行为可以通过多种方法进行配置,目前只包括启用/禁用检查。

启用或禁用检查

每个可用的钩子都包含多个检查,可以使用以下任何一种方法(按优先级排序)启用或禁用:

  1. 例如,作为参数,oca-checks-odoo --enable=check-to-enable --disable=check-to-disable1,check-to-disable2
  2. 使用环境变量 OCA_HOOKS_ENABLEOCA_HOOKS_DISABLE,例如,export OCA_HOOKS_ENABLE=check1,check2
  3. 配置文件。可以通过参数 --config 指定其路径。或者(默认情况下)将在以下位置(按顺序)查找名为 .oca_hooks.cfg 的文件:
    1. 当前工作目录
    2. 仓库根目录
    3. 用户家目录

使用配置文件

要使用配置文件启用或禁用检查,在 MESSAGES_CONTROL 部分 下添加 disableenable 键。例如:

[MESSAGES_CONTROL]
enable=check-enable1,check-enable2
disable=check-to-disable

如前所述,每个源都有一个特定的优先级。这意味着如果存在环境变量 OCA_HOOKS_ENABLE=check1,则配置文件在上面的启用检查方面不会产生任何影响,并且唯一启用的检查将是 check1

然而,如果没有设置 OCA_HOOKS_DISABLE,则配置文件仍然会产生影响,并且 check-to-disable 将被禁用。

检查

  • 检查 manifest-syntax-error 检查清单文件是否有语法错误

  • 检查 csv-duplicate-record-id 重复CSV "id"(即xmlid)但用于CSV文件

  • 检查 csv-syntax-error 检查清单中声明的CSV文件的语法错误

  • 检查 xml-deprecated-data-node xml节点内的弃用节点

  • 检查 xml-deprecated-openerp-node 弃用的xml节点

  • 检查 xml-deprecated-qweb-directive 使用弃用的QWeb指令 t-*-options

  • 检查 xml-not-valid-char-link src/href中的资源包含无效字符。

  • 检查 xml-oe-structure-missing-id

      Ensure all tags with class 'oe_structure' have an ID. For more information on the rationale, see:
      https://github.com/OCA/odoo-pre-commit-hooks/issues/27
    
  • 检查 xml-redundant-module-name

      If the module is called "module_a" and the xmlid is
      `<record id="module_a.xmlid_name1" ...`
    
      The "module_a." is redundant it could be replaced to only
      `<record id="xmlid_name1" ...`
    
  • 检查 xml-dangerous-filter-wo-user 检查未分配用户的危险过滤器

  • 检查 xml-create-user-wo-reset-password 未带有 context="{'no_reset_password': True}" 的用户记录。此上下文避免发送电子邮件和邮件日志警告

  • 检查 xml-view-dangerous-replace-low-priority 在ir.ui.view中的低优先级替换

          <field name="priority" eval="10"/>
          ...
              <field name="name" position="replace"/>
    
  • 检查 xml-deprecated-tree-attribute 使用弃用的属性声明tree-view

  • 检查 xml-record-missing-id 当标签没有id时生成

  • 检查 xml-duplicate-record-id

      If a module has duplicated record_id AKA xml_ids
      file1.xml
          <record id="xmlid_name1"
      file2.xml
          <record id="xmlid_name1"
    
  • 检查 xml-duplicate-fields 在所有记录节点 <record id="xmlid_name1"... <field name="field_name1"... <field name="field_name1"...

  • 检查 xml-syntax-error 检查Odoo清单中声明的XML文件的语法

  • 检查 xml-dangerous-qweb-replace-low-priority 定义低优先级的危险qweb视图

  • 检查 xml-duplicate-template-id 当两个模板共享相同的ID时触发

  • 检查 xml-xpath-translatable-item 使用 contains(text(), 'Text translatable') 检查 xpath 节点。由于文本可以翻译,因此它是一个可变值。如果更改语言,可能会引发 ValueError 异常。

检查 PO

  • 检查 po-requires-module 翻译条目需要注释 #. module: MODULE

  • 检查 po-python-parse-printf 检查 msgid 是否使用 str 变量(如 %s)。因此,翻译 msgstr 必须具有相同数量的变量

  • 检查 po-python-parse-format 检查 msgid 是否使用 str 变量(如 {})。因此,翻译 msgstr 必须具有相同数量的变量

  • 检查 po-duplicate-message-definition (消息-id)在所有PO文件条目中

  • 检查 po-duplicate-model-definition 验证没有条目共享相同的 'model:' 标签

  • 检查 po-pretty-format 检查以下内容:1. 条目按字母顺序排序 2. 行在78列处换行(与Odoo相同) 3. 当msgstr与msgid相同时,清除msgstr

  • 检查 po-syntax-error 检查i18n*文件夹中PO文件的语法

帮助

usage: oca-checks-odoo-module [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [files_or_modules ...]

positional arguments:
 files_or_modules Odoo __manifest__.py paths or Odoo module paths.

options:
 -h, --help show this help message and exit
 --no-verbose If enabled so disable verbose mode.
 --no-exit If enabled so it will not call exit.
 --disable DISABLE, -d DISABLE Disable the checker with the given 'check-name', separated by commas.
 --enable ENABLE, -e ENABLE Enable the checker with the given 'check-name', separated by commas. Default: All checks are enabled by default
 --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)
 --list-msgs List all currently enabled messages.
 --fix Automatically fix files when possible

帮助PO

usage: oca-checks-po [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [po_files ...]

positional arguments:
 po_files PO files.

options:
 -h, --help show this help message and exit
 --no-verbose If enabled so disable verbose mode.
 --no-exit If enabled so it will not call exit.
 --disable DISABLE, -d DISABLE Disable the checker with the given 'check-name', separated by commas.
 --enable ENABLE, -e ENABLE Enable the checker with the given 'check-name', separated by commas. Default: All checks are enabled by default
 --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)
 --list-msgs List all currently enabled messages.
 --fix Automatically fix files when possible

示例

示例 PO

许可证

本存储库采用AGPL-3.0许可。


OCA,或称Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

变更

v0.0.33

  • [改进] check_odoo_module_po:从错误消息中提取行号(#108)
  • [改进] 更好的错误输出(#106)

v0.0.32

v0.0.31

  • [参考] setup:添加 py3.12 支持信息(#98)
  • [参考] .github:更新 actions 版本,修复缓存并更新 lints(#97)
  • [参考] tests:修复 windows po autofix 单元测试(#96)

v0.0.30

  • CI 改进(#93)
  • [参考] setup:启用 py311 分类器(#87)

v0.0.29

  • [改进] 添加 xml-duplicate-template-id 信息(#82)
  • [修复] lints(#86)
  • [添加] po-duplicate-model-definition 检查(#85)
  • [参考] 不要过滤消息,移动 is_message_enabled(#83)
  • [改进] 添加 xml-record-missing-id(#84)

v0.0.28

  • [修复] oe-structure-missing-id:更改约束,添加文档(#81)

v0.0.27

  • [参考] 改进 xpath 表达式(#80)

v0.0.26

  • [改进] 改进 XPath 表达式,仅编译一次,修复假阴性,添加性能测试(#79)
  • [添加] pretty-format-po 检查(#76)
  • [改进] 添加 xml-oe-structure-missing-id 检查(#78)
  • [参考] tests:生成不可变的 readme(不带额外空格)
  • [改进] README:添加了配置部分

v0.0.25

  • [参考] requirements.txt:更新 polib 以修复问题并改进(#72)

v0.0.24

  • [修复] pre-commit:修复 isort 钩子 - RuntimeError The Poetry 配置无效(#71)

v0.0.23

  • [修复] 正确的文档(#69)

v0.0.22

  • [改进] "xml-view-dangerous-replace-low-priority" 的帮助信息(#68)
  • 编写了关于提议重构的文档(#66)
  • [修复] ci:更新 flake8 仓库 URL,tox.ini 和 gh actions .yml(#65)
  • [参考] hooks:添加对 `` 的支持(#62)

v0.0.21

  • [参考] duplicate-xml-fields:仅适用于直接记录的子项(#58)

v0.0.20

  • [修复] xml-xpath-translatable-item:修复调用方法 o.amount_to_text() 的假阴性(#57)

v0.0.19

  • [修复] setup:向包中添加缺失的 "requirements.txt" 文件(#441)(#55)

v0.0.18

  • [修复] checks_odoo_module:支持 "qweb" 清单数据部分的 glob 表达式(#54)
  • [改进] oca_pre_commit_hooks:添加 --list-msgs 选项(#53)
  • [参考] oca_pre_commit_hooks:静默子进程 git 错误(#52)

v0.0.17

  • [改进] oca_pre_commit_hooks:支持从 ENV 中启用/禁用(#38)(#49)

v0.0.16

  • [添加] xml-xpath-translatable-item:添加新的检查以识别从 xpath 使用的可变项(#50)

v0.0.15

  • [修复] oca_pre_commit_hooks:修复 exit_status 假错误(#48)

v0.0.14

  • [改进] oca_pre_commit_hooks:支持配置文件(#41)

v0.0.13

  • [参考] pylint_odoo:删除 TODO 注释(#47)
  • [参考] requirements:删除未使用的库和 pre-commit 钩子(#45)
  • [参考] xml-deprecated-data-node:使用数据节点 sourceline 而不是 odoo 节点(#43)
  • [改进] oca_pre_commit_hooks:支持从禁用注释中禁用 XML 检查(#42)
  • [参考] README:修复 pypi 软件包名称(#35)
  • [参考] oca_pre_commit_hooks:cli_po,cli:添加 cli_po 和 cli 全局(#36)
  • [REF] 设置:Match requires-python = ">=3.7" 从 pre-commit 中
  • [REF] CI:启用 py3.11

v0.0.12

  • [REF] checks_odoo_module_xml:允许存在具有 'groups' 的重复字段 (#32)
  • [REF] CI:启用 tox 与 parallels + codecov 兼容 (#33)

v0.0.11

  • [REF] codecov:再次启用 codecov
  • [REM] missing-readme:检查添加到 pylint-odoo
  • [REF] TOX:去除名称,移除 no-cover,与 parallels 选项兼容 (#24)
  • [REF] lint:针对 py 包而不是 odoo 模块调整 lint

v0.0.10

  • [REF] README:更新 README 并修复自动生成的内容 (#22)
  • [REF] checks_odoo_module_po:仅在修改的 PO 文件上运行 (#21)
  • [REF] manifest:跳过重复的数据文件 (#20)

v0.0.9

  • [FIX] README:修复正则表达式以替换自动生成的内容 (#18)
  • [REF] README:如果需要,从 CI 检测 README 是否需要更新 (#17)

v0.0.8

  • [REF] README:添加检查示例部分和自动生成它的脚本 (#16)
  • [REF] README:添加帮助部分和自动生成它的脚本 (#15)

v0.0.7

  • [REF] checks:将 name_checks 改为 name-checks (#14)
  • [REF] oca_pre_commit_hooks:在消息中使用更短的路径 (#13)
  • [FIX] pre-commit-hooks.yaml:即使 manifest 未更改也运行检查
  • [REF] test:移除已修复的 TODO 注释

v0.0.6

  • [FIX] oca_pre_commit_hooks:修复具有语法错误的检查 (#8)

v0.0.5

  • [REF] oca_pre_commit_hooks:进行小的改进 (#7)

v0.0.4

  • [IMP] oca_pre_commit_hooks:启用“启用”检查的功能 (#6)
  • [IMP] oca_pre_commit_hooks:添加可用于禁用检查的入口点参数 (#5)

v0.0.3

  • [REF] README:移除过时的 CI 构建

v0.0.2

  • [REF] CI:重新使用 tox 在 CI 中运行 pre-commit,使用相同的缓存和包
  • [ADD] .pre-commit-hooks.yaml:与 pre-commit-hooks 兼容,可以直接用作钩子 ID

v0.0.1

  • [ADD] 将 pylint-odoo 检查(与 python 无关)迁移到 pre-commit 钩子 (#2)
  • 初始化

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

oca_odoo_pre_commit_hooks-0.0.33.tar.gz (51.6 kB 查看哈希)

上传时间

构建分发

oca_odoo_pre_commit_hooks-0.0.33-py3-none-any.whl (41.4 kB 查看哈希)

上传时间 Python 3