On 13/08/17 05:41, Jeff King wrote: > On Fri, Aug 11, 2017 at 09:39:11PM -0700, Junio C Hamano wrote: > >>> Yeah, I just dug in the archive. The script I ran way back when was >>> actually clang-format-diff. >> >> I am confident with the competence of people around here that we can >> come up with a reasonable checker for obvious style violations. In >> the worst case, we could customize and/or tweak checkpatch.pl and >> start from there. > > I am confident we _can_, too. My question is whether we will. :) > >> Assuming that we can have such a checker, I am more interested in >> the way how people envision such a checker fits in our workflow to >> help people. Earlier Dscho floated an idea to integrate with the >> GitHub pull requests in a way similar to how Travis and SubmitGit >> are triggered, and I can sort of see how it may help, but I haven't >> seen ideas from others. > > Yeah, I agree. I assume most people already run "make test" locally. I'd > be happy enough if we started with a "make style" that offers style > suggestions for you to accept. From there we can grow into > "automatically apply suggestions" and integrating with things like > submitGit. As a start, how about something like this: -- >8 -- $ git diff diff --git a/Makefile b/Makefile index 461c845d3..7555def45 100644 --- a/Makefile +++ b/Makefile @@ -2440,6 +2440,18 @@ $(SP_OBJ): %.sp: %.c GIT-CFLAGS FORCE .PHONY: sparse $(SP_OBJ) sparse: $(SP_OBJ) +ST_C = $(patsubst %.o,%.stc,$(C_OBJ)) +ST_H = $(patsubst %.h,%.sth,$(LIB_H)) + +$(ST_C): %.stc: %.c FORCE + checkpatch.pl --no-tree --show-types --ignore=NEW_TYPEDEFS,INLINE -f $< + +$(ST_H): %.sth: %.h FORCE + checkpatch.pl --no-tree --show-types --ignore=NEW_TYPEDEFS,INLINE -f $< + +.PHONY: style $(ST_C) $(ST_H) +style: $(ST_C) $(ST_H) + check: common-cmds.h @if sparse; \ then \ $ -- >8 -- To give it a try: $ make git.stc # just run checkpatch over git.c $ make cache.sth # just run checkpatch over cache.h $ make -k style >style.out 2>&1 # yep, large output! A bit crude, but workable. ;-) Just FYI, for me: $ wc -l style.out 144076 style.out $ $ grep '^WARNING' style.out | cut -d: -f1,2 | sort | uniq -c 2 WARNING:AVOID_EXTERNS 495 WARNING:BLOCK_COMMENT_STYLE 127 WARNING:BRACES 213 WARNING:CONSTANT_COMPARISON 12584 WARNING:CONST_STRUCT 5 WARNING:CVS_KEYWORD 26 WARNING:DEEP_INDENTATION 2 WARNING:DEFAULT_NO_BREAK 77 WARNING:EMBEDDED_FUNCTION_NAME 5 WARNING:ENOSYS 773 WARNING:FUNCTION_ARGUMENTS 39 WARNING:INDENTED_LABEL 2610 WARNING:LEADING_SPACE 1 WARNING:LINE_CONTINUATIONS 2680 WARNING:LINE_SPACING 3975 WARNING:LONG_LINE 330 WARNING:LONG_LINE_COMMENT 380 WARNING:LONG_LINE_STRING 2 WARNING:MACRO_WITH_FLOW_CONTROL 1 WARNING:MISORDERED_TYPE 17 WARNING:MISSING_SPACE 1 WARNING:ONE_SEMICOLON 77 WARNING:PREFER_PRINTF 7 WARNING:QUOTED_WHITESPACE_BEFORE_NEWLINE 10 WARNING:RETURN_VOID 5 WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO 6 WARNING:SIZEOF_PARENTHESIS 61 WARNING:SPACE_BEFORE_TAB 347 WARNING:SPACING 322 WARNING:SPLIT_STRING 87 WARNING:STATIC_CONST_CHAR_ARRAY 2 WARNING:STORAGE_CLASS 538 WARNING:SUSPECT_CODE_INDENT 29 WARNING:SYMBOLIC_PERMS 279 WARNING:TABSTOP 9 WARNING:TRAILING_SEMICOLON 3 WARNING:TYPECAST_INT_CONSTANT 2 WARNING:UNNECESSARY_BREAK 56 WARNING:UNNECESSARY_ELSE 568 WARNING:UNSPECIFIED_INT 4 WARNING:USE_NEGATIVE_ERRNO 26 WARNING:VOLATILE $ Hmm, on reflection, it may be a bit too crude! :-D ATB, Ramsay Jones