[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 09/09/14 10:50, Ian Campbell wrote:
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


I am not able to just use it:


[root@localhost xen]# xen/tools/xen-indent xen/arch/x86/numa.c
YAML:39:49: error: unknown key 'SpaceBeforeParens'
SpaceBeforeParens:                              ControlStatements
                                                ^~~~~~~~~~~~~~~~~
Error reading /root/xen/xen/arch/x86/.clang-format: Invalid argument
Can't find usable .clang-format, using LLVM style

Also clang_format is not available in older distros.

   -Don Slutz

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®.