linux-stable/Documentation/translations/zh_TW/process/submit-checklist.rst

115 lines
5.0 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: Documentation/process/submit-checklist.rst
:Translator:
- Alex Shi <alexs@kernel.org>
- Wu XiangCheng <bobwxc@email.cn>
- Hu Haowen <src.res.211@gmail.com>
.. _tw_submitchecklist:
Linux內核補丁提交檢查單
~~~~~~~~~~~~~~~~~~~~~~~
如果開發人員希望看到他們的內核補丁提交更快地被接受,那麼他們應該做一些基本
的事情。
這些都是在 Documentation/translations/zh_CN/process/submitting-patches.rst
和其他有關提交Linux內核補丁的文檔中提供的。
1) 如果使用工具,則包括定義/聲明該工具的文件。不要依賴其他頭文件來引入您使用
的頭文件。
2) 乾淨的編譯:
a) 使用合適的 ``CONFIG`` 選項 ``=y````=m````=n`` 。沒有 ``gcc``
警告/錯誤,沒有鏈接器警告/錯誤。
b) 通過 ``allnoconfig````allmodconfig``
c) 使用 ``O=builddir`` 時可以成功編譯
d) 任何 Doucmentation/ 下的變更都能成功構建且不引入新警告/錯誤。
``make htmldocs````make pdfdocs`` 檢驗構建情況並修復問題。
3) 通過使用本地交叉編譯工具或其他一些構建設施在多個CPU體系結構上構建。
4) PPC64是一種很好的交叉編譯檢查體系結構因爲它傾向於對64位的數使用無符號
長整型。
5) 按 Documentation/translations/zh_CN/process/coding-style.rst 所述檢查您的
補丁是否爲常規樣式。在提交之前使用補丁樣式檢查器 ``scripts/checkpatch.pl``
檢查是否有輕微的衝突。您應該能夠處理您的補丁中存在的所有
違規行爲。
6) 任何新的或修改過的 ``CONFIG`` 選項都不應搞亂配置菜單,並默認爲關閉,除非
它們符合 ``Documentation/kbuild/kconfig-language.rst`` 菜單屬性:默認值中
記錄的例外條件。
7) 所有新的 ``kconfig`` 選項都有幫助文本。
8) 已仔細審查了相關的 ``Kconfig`` 組合。這很難用測試來糾正——腦力在這裏是有
回報的。
9) 通過 sparse 清查。
(參見 Documentation/translations/zh_CN/dev-tools/sparse.rst
10) 使用 ``make checkstack`` 並修復他們發現的任何問題。
.. note::
``checkstack`` 並不會明確指出問題但是任何一個在堆棧上使用超過512
字節的函數都可以進行更改。
11) 包括 :ref:`kernel-doc <kernel_doc_zh>` 內核文檔以記錄全局內核API。靜態
函數不需要,但也可以。)使用 ``make htmldocs````make pdfdocs`` 檢查
:ref:`kernel-doc <kernel_doc_zh>` 並修復任何問題。
12) 通過以下選項同時啓用的測試: ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
``CONFIG_PROVE_RCU````CONFIG_DEBUG_OBJECTS_RCU_HEAD``
13)``CONFIG_SMP``, ``CONFIG_PREEMPT`` 開啓和關閉的情況下都進行構建和運行
時測試。
14) 所有代碼路徑都已在啓用所有死鎖檢測lockdep功能的情況下運行。
15) 所有新的 ``/proc`` 條目都記錄在 ``Documentation/``
16) 所有新的內核引導參數都記錄在
Documentation/admin-guide/kernel-parameters.rst 中。
17) 所有新的模塊參數都記錄在 ``MODULE_PARM_DESC()``
18) 所有新的用戶空間接口都記錄在 ``Documentation/ABI/`` 中。有關詳細信息,
請參閱 ``Documentation/ABI/README`` 。更改用戶空間接口的補丁應該抄送
linux-api@vger.kernel.org。
19) 已通過至少注入slab和page分配失敗進行檢查。請參閱 ``Documentation/fault-injection/``
如果新代碼是實質性的,那麼添加子系統特定的故障注入可能是合適的。
20) 新添加的代碼已經用 ``gcc -W`` 編譯(使用 ``make EXTRA-CFLAGS=-W`` )。這
將產生大量噪聲,但對於查找諸如“警告:有符號和無符號之間的比較”之類的錯誤
很有用。
21) 在它被合併到-mm補丁集中之後進行測試以確保它仍然與所有其他排隊的補丁以
及VM、VFS和其他子系統中的各種更改一起工作。
22) 所有內存屏障(例如 ``barrier()``, ``rmb()``, ``wmb()`` )都需要源代碼注
釋來解釋它們正在執行的操作及其原因的邏輯。
23) 如果補丁添加了任何ioctl那麼也要更新
``Documentation/userspace-api/ioctl/ioctl-number.rst``
24) 如果修改後的源代碼依賴或使用與以下 ``Kconfig`` 符號相關的任何內核API或
功能,則在禁用相關 ``Kconfig`` 符號和/或 ``=m`` (如果該選項可用)的情況
下測試以下多個構建[並非所有這些都同時存在,只是它們的各種/隨機組合]
``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``,
``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
``CONFIG_NET``, ``CONFIG_INET=n`` (但是最後一個需要 ``CONFIG_NET=y`` )。