Re: [Linux-kernel-mentees] [PATCH v2 2/3] docs: add documentation for checkpatch
From: Dwaipayan Ray <dwaipayanray1@gmail.com>
Date: 2021-01-28 20:13:21
Also in:
lkml
On Fri, Jan 29, 2021 at 12:53 AM Joe Perches [off-list ref] wrote:
On Thu, 2021-01-28 at 20:08 +0530, Dwaipayan Ray wrote:quoted
Add documentation for kernel script checkpatch.pl. This documentation is also parsed by checkpatch to enable a verbose mode. Only a few test descriptions are added and the rest will be added later over time to document all the message types emitted by checkpatch.Better to document them all rather than partially. $ git grep -ohP '(?:\w+|\})\s*\(\s*\"[A-Z_]+"' scripts/checkpatch.pl | \ cut -f2 -d'"' | sort | uniq ALLOC_ARRAY_ARGS ALLOC_SIZEOF_STRUCT ALLOC_WITH_MULTIPLY ARCH_DEFINES ARCH_INCLUDE_LINUX ARRAY_SIZE ASSIGN_IN_IF ASSIGNMENT_CONTINUATIONS AVOID_BUG AVOID_EXTERNS AVOID_L_PREFIX BAD_SIGN_OFF BAD_STABLE_ADDRESS_STYLE BIT_MACRO BLOCK_COMMENT_STYLE BOOL_COMPARISON BRACES BRACKET_SPACE CAMELCASE CHECK CODE_INDENT COMMIT_COMMENT_SYMBOL COMMIT_LOG_LONG_LINE COMMIT_MESSAGE COMPARISON_TO_NULL COMPLEX_MACRO CONCATENATED_STRING CONFIG_DESCRIPTION CONFIG_TYPE_BOOLEAN CONSIDER_COMPLETION CONSIDER_KSTRTO CONSTANT_COMPARISON CONSTANT_CONVERSION CONST_CONST CONST_READ_MOSTLY CONST_STRUCT CORRUPTED_PATCH CVS_KEYWORD DATA_RACE DATE_TIME DEEP_INDENTATION DEFAULT_NO_BREAK DEFINE_ARCH_HAS DEPRECATED_API DEPRECATED_VARIABLE DEVICE_ATTR_FUNCTIONS DEVICE_ATTR_PERMS DEVICE_ATTR_RO DEVICE_ATTR_RW DEVICE_ATTR_WO DIFF_IN_COMMIT_MSG DOS_LINE_ENDINGS DO_WHILE_MACRO_WITH_TRAILING_SEMICOLON DT_SCHEMA_BINDING_PATCH DT_SPLIT_BINDING_PATCH DUPLICATED_SYSCTL_CONST ELSE_AFTER_BRACE EMAIL_SUBJECT EMBEDDED_FILENAME EMBEDDED_FUNCTION_NAME ENOSYS ENOTSUPP ERROR EXECUTE_PERMISSIONS EXPORTED_WORLD_WRITABLE EXPORT_SYMBOL FILE_PATH_CHANGES FROM_SIGN_OFF_MISMATCH FSF_MAILING_ADDRESS FUNCTION_ARGUMENTS FUNCTION_WITHOUT_ARGS GERRIT_CHANGE_ID GIT_COMMIT_ID GLOBAL_INITIALISERS HEXADECIMAL_BOOLEAN_TEST HOTPLUG_SECTION IN_ATOMIC INCLUDE_LINUX INDENTED_LABEL INIT_ATTRIBUTE INITIALISED_STATIC INLINE INLINE_LOCATION IS_ENABLED_CONFIG JIFFIES_COMPARISON KREALLOC_ARG_REUSE LEADING_SPACE LIKELY_MISUSE LINE_CONTINUATIONS LINE_SPACING LINUX_VERSION_CODE LOCKDEP LOCKING LOGGING_CONTINUATION LOGICAL_CONTINUATIONS LONG_LINE LONG_UDELAY MACRO_ARG_PRECEDENCE MACRO_ARG_REUSE MACRO_WITH_FLOW_CONTROL MAINTAINERS_STYLE MALFORMED_INCLUDE MASK_THEN_SHIFT MEMORY_BARRIER MEMSET MINMAX MISORDERED_TYPE MISPLACED_INIT MISSING_EOF_NEWLINE MISSING_SIGN_OFF MODIFIED_INCLUDE_ASM MODULE_LICENSE MSLEEP MULTILINE_DEREFERENCE MULTIPLE_ASSIGNMENTS MULTIPLE_DECLARATION MULTISTATEMENT_MACRO_USE_DO_WHILE NAKED_SSCANF NETWORKING_BLOCK_COMMENT_STYLE NEW_TYPEDEFS NO_AUTHOR_SIGN_OFF NON_OCTAL_PERMISSIONS NOT_UNIFIED_DIFF NR_CPUS OBSOLETE ONE_SEMICOLON OOM_MESSAGE OPEN_BRACE OPEN_ENDED_LINE PARENTHESIS_ALIGNMENT PATCH_PREFIX POINTER_LOCATION PREFER_DEFINED_ATTRIBUTE_MACRO PREFER_DEV_LEVEL PREFER_ETH_BROADCAST_ADDR PREFER_ETHER_ADDR_COPY PREFER_ETHER_ADDR_EQUAL PREFER_ETH_ZERO_ADDR PREFER_FALLTHROUGH PREFER_IS_ENABLED PREFER_KERNEL_TYPES PREFER_PR_LEVEL PREFER_SEQ_PUTS PRINTF_L PRINTF_Z PRINTK_RATELIMITED PRINTK_WITHOUT_KERN_LEVEL QUOTED_WHITESPACE_BEFORE_NEWLINE REPEATED_WORD RETURN_PARENTHESES RETURN_VOID SELF_ASSIGNMENT SINGLE_STATEMENT_DO_WHILE_MACRO SIZEOF_ADDRESS SIZEOF_PARENTHESIS SPACE_BEFORE_TAB SPACING SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO STATIC_CONST STATIC_CONST_CHAR_ARRAY STORAGE_CLASS STRING_FRAGMENTS STRLCPY SUSPECT_CODE_INDENT SUSPECT_COMMA_SEMICOLON SWITCH_CASE_INDENT_LEVEL SYMBOLIC_PERMS TABSTOP TEST_ATTR TEST_NOT_ATTR TEST_NOT_TYPE TEST_TYPE TRACE_PRINTK TRACING_LOGGING TRAILING_SEMICOLON TRAILING_STATEMENTS TRAILING_WHITESPACE TYPECAST_INT_CONSTANT TYPO_SPELLING UAPI_INCLUDE UNCOMMENTED_DEFINITION UNDOCUMENTED_DT_STRING UNDOCUMENTED_SETUP UNKNOWN_COMMIT_ID UNNECESSARY_BREAK UNNECESSARY_CASTS UNNECESSARY_ELSE UNNECESSARY_INT UNNECESSARY_KERN_LEVEL UNNECESSARY_MODIFIER UNNECESSARY_PARENTHESES UNSPECIFIED_INT USE_DEVICE_INITCALL USE_FUNC USE_LOCKDEP USE_NEGATIVE_ERRNO USE_RELATIVE_PATH USE_SPINLOCK_T USLEEP_RANGE VOLATILE VSPRINTF_POINTER_EXTENSION VSPRINTF_SPECIFIER_PX WAITQUEUE_ACTIVE WARNING WEAK_DECLARATION WHILE_AFTER_BRACE WHITESPACE_AFTER_LINE_CONTINUATION YIELD
The amount looks a bit scary at a first glance! But sure I will try to get them all documented, although it might take a bit of time.
quoted
diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst[]quoted
+Checkpatch (scripts/checkpatch.pl) is a perl script which checks for trivial style +violations in patches and optionally corrects them. Checkpatch can also be run on +file contexts and without the kernel tree. + +It should be noted that checkpatch may not be always right. At times the humancheckpatch is not always right. Your judgement takes precedence over checkpatch messages.quoted
+ + - --types TYPE(,TYPE2...) + + Only display messages with the given types. + + Example:: + + ./scripts/checkpatch.pl mypatch.patch --types EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF + + - --ignore TYPE(,TYPE2...) + + Strip off messages with the given types.checkpatch will not emit messages for the specified types,quoted
+ + Example:: + + ./scripts/checkpatch.pl mypatch.patch --ignore EMAIL_SUBJECT,NO_AUTHOR_SIGN_OFF + + - --show-types + + By default checkpatch doesn't display the type associated with the messages. + Set this flag to show the message type in the output. + + - --max-line-length=n + + Set the max line length (default 100). On exceeding the given length, a message + is emitted.If a line exceeds the specified length, a LONG_LINE message is emitted.quoted
+ + The message level is different for patch and file contexts. For patches, a WARNING is + emitted. While a milder CHECK is emitted for files. So for file contexts, the --strict + flag must also be enabled. + + - --min-conf-desc-length=n + + Set the min description length, if shorter, warn.Kconfig entry minimum description
Thanks for the review Joe! With best regards, Dwaipayan. _______________________________________________ Linux-kernel-mentees mailing list Linux-kernel-mentees@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees