From: Ramsay Jones <ramsay@ramsayjones.plus.com>
To: Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>
Cc: "Brandon Williams" <bmwill@google.com>,
"Stefan Beller" <sbeller@google.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [RFC] clang-format: outline the git project's coding style
Date: Sun, 13 Aug 2017 17:36:36 +0100 [thread overview]
Message-ID: <4ded81fc-a495-023f-02e7-2dbd2ec1be68@ramsayjones.plus.com> (raw)
In-Reply-To: <26bebb5b-857f-1501-5139-a5513d9875ec@ramsayjones.plus.com>
On 13/08/17 17:14, Ramsay Jones wrote:
>
>
> 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
> $
oops, I forgot this:
$ grep '^ERROR' style.out | cut -d: -f1,2 | sort | uniq -c
216 ERROR:ASSIGN_IN_IF
46 ERROR:CODE_INDENT
41 ERROR:COMPLEX_MACRO
317 ERROR:ELSE_AFTER_BRACE
3 ERROR:FUNCTION_WITHOUT_ARGS
1 ERROR:GLOBAL_INITIALISERS
46 ERROR:INITIALISED_STATIC
2 ERROR:INLINE_LOCATION
5 ERROR:MULTISTATEMENT_MACRO_USE_DO_WHILE
305 ERROR:OPEN_BRACE
314 ERROR:POINTER_LOCATION
5 ERROR:RETURN_PARENTHESES
3464 ERROR:SPACING
7 ERROR:SWITCH_CASE_INDENT_LEVEL
326 ERROR:TRAILING_STATEMENTS
15 ERROR:TRAILING_WHITESPACE
$
> Hmm, on reflection, it may be a bit too crude! :-D
>
> ATB,
> Ramsay Jones
>
>
next prev parent reply other threads:[~2017-08-13 16:36 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-08 1:25 [RFC] clang-format: outline the git project's coding style Brandon Williams
2017-08-08 12:05 ` Johannes Schindelin
2017-08-08 17:40 ` Stefan Beller
2017-08-08 18:23 ` Brandon Williams
2017-08-09 22:33 ` Johannes Schindelin
2017-08-09 22:42 ` Stefan Beller
2017-08-10 9:38 ` Johannes Schindelin
2017-08-10 16:41 ` Junio C Hamano
2017-08-10 17:15 ` Brandon Williams
2017-08-10 17:28 ` Junio C Hamano
2017-08-10 21:30 ` Brandon Williams
2017-08-11 20:06 ` Ben Peart
2017-08-14 15:52 ` Johannes Schindelin
2017-09-28 11:41 ` Johannes Schindelin
2017-09-28 17:16 ` Brandon Williams
2017-08-08 17:45 ` Junio C Hamano
2017-08-08 18:03 ` Brandon Williams
2017-08-08 18:25 ` Junio C Hamano
2017-08-09 7:05 ` Junio C Hamano
2017-08-11 17:49 ` Brandon Williams
2017-08-11 19:00 ` Junio C Hamano
2017-08-09 13:01 ` Jeff King
2017-08-09 14:03 ` Ævar Arnfjörð Bjarmason
2017-08-09 22:53 ` Stefan Beller
2017-08-09 23:11 ` Stefan Beller
2017-08-11 17:52 ` Brandon Williams
2017-08-11 21:18 ` Jeff King
2017-08-12 4:39 ` Junio C Hamano
2017-08-13 4:41 ` Jeff King
2017-08-13 16:14 ` Ramsay Jones
2017-08-13 16:36 ` Ramsay Jones [this message]
2017-08-13 17:33 ` Junio C Hamano
2017-08-13 19:17 ` Ramsay Jones
2017-08-09 23:19 ` Jeff King
2017-08-15 0:40 ` brian m. carlson
2017-08-15 1:03 ` Jonathan Nieder
2017-08-14 21:30 ` [PATCH v2 0/2] clang-format Brandon Williams
2017-08-14 21:30 ` [PATCH v2 1/2] clang-format: outline the git project's coding style Brandon Williams
2017-08-14 22:02 ` Stefan Beller
2017-08-15 13:56 ` Ben Peart
2017-08-15 17:37 ` Brandon Williams
2017-08-14 22:48 ` Jeff King
2017-08-14 22:51 ` Jeff King
2017-08-14 22:54 ` Brandon Williams
2017-08-14 23:01 ` Jeff King
2017-08-16 12:18 ` Johannes Schindelin
2017-08-15 14:28 ` Ben Peart
2017-08-15 17:34 ` Brandon Williams
2017-08-15 17:41 ` Stefan Beller
2017-08-14 21:30 ` [PATCH v2 2/2] Makefile: add style build rule Brandon Williams
2017-08-14 21:53 ` Stefan Beller
2017-08-14 22:25 ` Junio C Hamano
2017-08-14 22:28 ` Stefan Beller
2017-08-14 22:57 ` Jeff King
2017-08-14 23:29 ` Junio C Hamano
2017-08-14 23:47 ` Junio C Hamano
2017-08-15 0:05 ` Brandon Williams
2017-08-15 1:52 ` Jeff King
2017-08-14 21:32 ` [PATCH v2 0/2] clang-format Brandon Williams
2017-08-14 23:06 ` Jeff King
2017-08-14 23:15 ` Stefan Beller
2017-08-15 1:47 ` Jeff King
2017-08-15 3:03 ` Junio C Hamano
2017-08-15 3:38 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ded81fc-a495-023f-02e7-2dbd2ec1be68@ramsayjones.plus.com \
--to=ramsay@ramsayjones.plus.com \
--cc=avarab@gmail.com \
--cc=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).