[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/08/14 22:32, 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.

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"

This is missing "for".  And last I knew sed does not handle multiple lines.

And what about the "do {" exception?

    -Don Slutz

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