[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 3/3] xen/tools: script for automatically adjusting the coding style to xen style



On Tue, 2014-09-09 at 05:32 +0300, Mihai DonÈu wrote:
> This is a clang-format wrapper script that can be used to do the bulk of the
> coding style work on a foreign source file. It is not yet complete, but it's
> sufficient for 98% of the cases.

I think a lot of people would like to have something along these lines
available. Don also proposed something recently, see [0]. Not sure what
the hypervisor maintainers opinion is though, I've CCd a few for input.

I've no prior experience with either clang-format or astyle so I don't
know which is better, but I do like that clang-format doesn't need a
second pass in emacs (despite being an emacs user).

Ian.

[0] http://lists.xen.org/archives/html/xen-devel/2014-09/msg00918.html

> 
> Signed-off-by: Mihai DonÈu <mdontu@xxxxxxxxxxxxxxx>
> ---
>  xen/tools/xen-indent | 77 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 77 insertions(+)
>  create mode 100755 xen/tools/xen-indent
> 
> diff --git a/xen/tools/xen-indent b/xen/tools/xen-indent
> new file mode 100755
> index 0000000..6be507c
> --- /dev/null
> +++ b/xen/tools/xen-indent
> @@ -0,0 +1,77 @@
> +#!/bin/sh
> +
> +CLANG_FORMAT=`which clang-format 2>/dev/null`
> +
> +if [ "x$CLANG_FORMAT" = "x" ]; then
> +     printf "Error: \`clang-format' is not installed. It is usually part of 
> clang (3.4 and newer)\n" >&2
> +     exit 1
> +fi
> +
> +if [ "x$1" = "x" ]; then
> +     printf "Usage: $0 <file[s]>\n"
> +     exit 2
> +fi
> +
> +for i in $@; do
> +     DN=`dirname "$i"`
> +     cat >"$DN/.clang-format" <<EOF
> +---
> +AccessModifierOffset:                           -8
> +IndentWidth:                                    4
> +TabWidth:                                       4
> +ConstructorInitializerIndentWidth:              4
> +AlignEscapedNewlinesLeft:                       true
> +AlignTrailingComments:                          true
> +AllowAllParametersOfDeclarationOnNextLine:      true
> +AllowShortIfStatementsOnASingleLine:            false
> +AllowShortLoopsOnASingleLine:                   false
> +AllowShortFunctionsOnASingleLine:               false
> +AlwaysBreakTemplateDeclarations:                false
> +AlwaysBreakBeforeMultilineStrings:              false
> +BreakBeforeBinaryOperators:                     false
> +BreakBeforeTernaryOperators:                    true
> +BreakConstructorInitializersBeforeComma:        false
> +BinPackParameters:                              true
> +ColumnLimit:                                    80
> +ConstructorInitializerAllOnOneLineOrOnePerLine: false
> +DerivePointerBinding:                           false
> +ExperimentalAutoDetectBinPacking:               false
> +IndentCaseLabels:                               false
> +MaxEmptyLinesToKeep:                            1
> +NamespaceIndentation:                           All
> +ObjCSpaceBeforeProtocolList:                    true
> +PenaltyBreakBeforeFirstCallParameter:           19
> +PenaltyBreakComment:                            60
> +PenaltyBreakString:                             1000
> +PenaltyBreakFirstLessLess:                      120
> +PenaltyExcessCharacter:                         1000000
> +PenaltyReturnTypeOnItsOwnLine:                  60
> +PointerBindsToType:                             false
> +SpacesBeforeTrailingComments:                   1
> +Cpp11BracedListStyle:                           false
> +Standard:                                       Cpp11
> +UseTab:                                         Never
> +BreakBeforeBraces:                              Allman
> +IndentFunctionDeclarationAfterType:             false
> +SpaceBeforeParens:                              ControlStatements
> +SpacesInParentheses:                            false
> +SpacesInAngles:                                 false
> +SpaceInEmptyParentheses:                        false
> +SpacesInCStyleCastParentheses:                  false
> +SpaceAfterControlStatementKeyword:              true
> +SpaceBeforeAssignmentOperators:                 true
> +ContinuationIndentWidth:                        4
> +EOF
> +     ERR=0
> +     $CLANG_FORMAT "$i" >"${i}.clang-tmp" || ERR=1
> +     rm -f "$DN/.clang-format"
> +     if [ $ERR -ne 0 ]; then
> +             rm -f "${i}.clang-tmp"
> +             exit 3
> +     fi
> +     sed 's#if\s*(\(.*\))#if ( \1 )#m' "${i}.clang-tmp" >"${i}.clang-tmp.1"
> +     sed 's#switch\s*(\(.*\))#switch ( \1 )#m' "${i}.clang-tmp.1" 
> >"${i}.clang-tmp.2"
> +     sed 's#while\s*(\(.*\))#while ( \1 )#m' "${i}.clang-tmp.2" 
> >"${i}.clang-tmp.3"
> +     mv -f "${i}.clang-tmp.3" "${i}"
> +     rm -f "${i}.clang-tmp" "${i}.clang-tmp.1" "${i}.clang-tmp.2"
> +done



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.