在 7/3/25 6:35 AM, Jonathan Corbet 写道:
[I'll slow down soon, honest - real work is piling up...] The kerneldoc parsing phase gathers all of the information about the declarations of interest, then passes it through to the output phase as a dict that is an unstructured blob of information; this organization has its origins in the Perl version of the program. It results in an interface that is difficult to reason about, dozen-parameter function calls, and other ills. Introduce a new class (KdocItem) to carry this information between the parser and the output modules, and, step by step, modify the system to use this class in a more structured way. This could be taken further by creating a subclass of KdocItem for each declaration type (function, struct, ...), but that is probably more structure than we need. As a final step, add some structure for the accumulation of the output text. The result is (I hope) clearer code, the removal of a bunch of boilerplate, and no changes to the generated output. Jonathan Corbet (12): docs: kdoc; Add a rudimentary class to represent output items docs: kdoc: simplify the output-item passing docs: kdoc: drop "sectionlist" docs: kdoc: Centralize handling of the item section list docs: kdoc: remove the "struct_actual" machinery docs: kdoc: use self.entry.parameterlist directly in check_sections() docs: kdoc: Coalesce parameter-list handling docs: kdoc: Regularize the use of the declaration name docs: kdoc: straighten up dump_declaration() docs: kdoc: directly access the always-there KdocItem fields docs: kdoc: clean up check_sections() docs: kdoc: Improve the output text accumulation
Reviewed-by: Yanteng Si <siyanteng@xxxxxxxxxxxxxxxxx> Thanks, Yanteng