mirror of https://github.com/mongodb/mongo
SERVER-18579: Add .clang-format & Scons support
This commit is contained in:
parent
6f6fa5a63d
commit
e484264ed6
|
|
@ -2230,6 +2230,10 @@ checkErrorCodes()
|
|||
# --- lint ----
|
||||
|
||||
def doLint( env , target , source ):
|
||||
import buildscripts.clang_format
|
||||
if not buildscripts.clang_format.lint(None, []):
|
||||
raise Exception("clang-format lint errors")
|
||||
|
||||
import buildscripts.lint
|
||||
if not buildscripts.lint.run_lint( [ "src/mongo/" ] ):
|
||||
raise Exception( "lint errors" )
|
||||
|
|
|
|||
|
|
@ -0,0 +1,171 @@
|
|||
/**
|
||||
* Sample file to demonstrate various clang-format messages
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// NamespaceIndentation: None
|
||||
namespace foo {
|
||||
// Contents of namespace are not indented.
|
||||
int foo;
|
||||
|
||||
namespace bar {
|
||||
int bar;
|
||||
|
||||
namespace {
|
||||
int anony;
|
||||
} // namespace anony
|
||||
|
||||
} // namespace bar
|
||||
|
||||
/**
|
||||
* A Class comment
|
||||
*/
|
||||
class Example {
|
||||
// AccessModiferOffset: -4
|
||||
public:
|
||||
// BreakConstructorInitializersBeforeComma: false
|
||||
// ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
//
|
||||
Example() : _aVariable(4), _bVariable(42) {}
|
||||
Example(int a)
|
||||
: _aVariable(a),
|
||||
_bVariable(42),
|
||||
_AReallyReallyLongVariableName(4),
|
||||
_AnotherReallyReallyLongVariableNameToTriggerWrapping(42) {
|
||||
printf("Hello ");
|
||||
}
|
||||
~Example() {}
|
||||
|
||||
/**
|
||||
* A Function comment
|
||||
* AllowShortFunctionsOnASingleLine: Empty
|
||||
*/
|
||||
int getOneLineFunction() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** A Incorrect Function comment
|
||||
* AllowShortFunctionsOnASingleLine: Empty
|
||||
*/
|
||||
void doNothing() {}
|
||||
|
||||
/**
|
||||
* A Useful Function comment
|
||||
*/
|
||||
int manyVariableFunction(unsigned long long arg1, char arg2, unsigned long long arg3);
|
||||
|
||||
private:
|
||||
int _aVariable;
|
||||
long _bVariable;
|
||||
short _cVarianble = 49;
|
||||
long _AReallyReallyLongVariableName;
|
||||
long _AnotherReallyReallyLongVariableNameToTriggerWrapping;
|
||||
};
|
||||
|
||||
int foo3() {
|
||||
return 42;
|
||||
}
|
||||
|
||||
// AlwaysBreakTemplateDeclarations: true
|
||||
template <typename T>
|
||||
T myAdd(T x, T y) {
|
||||
return x + y;
|
||||
}
|
||||
|
||||
// AlwaysBreakAfterDefinitionReturnType: false
|
||||
// BinPackParameters: false
|
||||
int Example::manyVariableFunction(unsigned long long argWithLongName,
|
||||
char arg2,
|
||||
unsigned long long argWithAnotherLongName) {
|
||||
// 3.7 - AlignConsecutiveAssignments - false
|
||||
//
|
||||
int aaaa = 12;
|
||||
int b = 23;
|
||||
int ccc = 23;
|
||||
// PointerAlignment: Left
|
||||
const char* some_pointer = "Hello";
|
||||
|
||||
// SpacesInAngles: false
|
||||
std::vector<std::pair<std::string, int>> list;
|
||||
|
||||
// SpaceAfterCStyleCast: false
|
||||
// SpacesInCStyleCastParentheses: false
|
||||
char* some_nonconst_pointer = (char*)some_pointer;
|
||||
|
||||
// Multi-line if
|
||||
// SpaceBeforeParens: False
|
||||
if (argWithLongName == 0) { // Comment: SpacesBeforeTrailingComments
|
||||
// Do something
|
||||
} else if (b % 7 = 3) {
|
||||
} // some weird trailing else comment that clang-format does not touch
|
||||
else {
|
||||
// Notice the indent around else
|
||||
}
|
||||
|
||||
// AllowShortIfStatementsOnASingleLine: false
|
||||
// Put statements on separate lines for short ifs
|
||||
if (arg2 == 'a')
|
||||
arg2 = 'b';
|
||||
|
||||
int bbbbbbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccccccccc;
|
||||
int aaaaaaaaaaaaaaaaaaaaaaaaaaaa =
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccccccccccccccccc;
|
||||
|
||||
// AlignOperands
|
||||
int dddddddddddddddddddddddddddd = aaaaaaaaaaaaaaaaaaaaaaaaaaaa * 7 + 4 % 235124 > 275645
|
||||
? bbbbbbbbbbbbbbbbbbbbbbbbbbbb + 897234
|
||||
: cccccccccccccccccccccccccccccc % 1293402;
|
||||
|
||||
// AllowShortBlocksOnASingleLine: false
|
||||
if (b) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
// AllowShortLoopsOnASingleLine: false
|
||||
while (b < 5)
|
||||
b++;
|
||||
|
||||
// BreakBeforeBinaryOperators: None
|
||||
if (b > 5 || b % 42 || cccccccccccccccccccccccccccccc % 873 || aaaa * 12312 % 23485 != 9873 ||
|
||||
some_pointer != 0) {
|
||||
printf("Huh!\n");
|
||||
}
|
||||
|
||||
// AlignAfterOpenBracket: false
|
||||
// BinPackParameters: false
|
||||
printf("A short function call %s %s %d - %ld\n", "", "tgz", 4, ULONG_MAX);
|
||||
printf("A long function call %s %s %d - %ld\n",
|
||||
"http://www.mongodbo.org/downloads",
|
||||
"mongodb-latest.tgz",
|
||||
4,
|
||||
ULONG_MAX);
|
||||
printf("Thing1 %s\n", "Thing2");
|
||||
|
||||
// No spaces between parens and args
|
||||
printf("%c\n", arg2);
|
||||
|
||||
// A switch statement: TODO: Andy, what is the indent we want? Google style?
|
||||
switch (arg2) {
|
||||
// AllowShortCaseLabelsOnASingleLine: false
|
||||
// IndentCaseLabels: true
|
||||
case 'a':
|
||||
return 2;
|
||||
case 'y':
|
||||
case 'z':
|
||||
// Do something here
|
||||
break;
|
||||
default:
|
||||
// The default`
|
||||
break;
|
||||
}
|
||||
|
||||
do {
|
||||
// Do a loop here
|
||||
} while (0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
} // namespace foo
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# BasedOnStyle: Google
|
||||
AccessModifierOffset: -4
|
||||
AlignOperands: false
|
||||
AlignAfterOpenBracket: true
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: false
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
ColumnLimit: 100
|
||||
CommentPragmas: ''
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
IndentCaseLabels: true
|
||||
IndentFunctionDeclarationAfterType: false
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
Language: Cpp
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: None
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: false
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Left
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 2
|
||||
SpacesInAngles: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
TabWidth: 4
|
||||
UseTab: Never
|
||||
Loading…
Reference in New Issue