Skip to content

Commit

Permalink
Setup Clang Format and Clang Tidy Checking (#34)
Browse files Browse the repository at this point in the history
This reformats the code with a style that's trying to be similar to the
existing one, but standardizes it much more.
  • Loading branch information
smarr authored Aug 1, 2024
2 parents efaa0bf + da89ab0 commit 2dc1437
Show file tree
Hide file tree
Showing 139 changed files with 3,659 additions and 2,935 deletions.
270 changes: 270 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
Language: Cpp
# BasedOnStyle: Chromium
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveShortCaseStatements:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCaseColons: false
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowBreakBeforeNoexceptSpecifier: Never
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterExternBlock: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAdjacentStringLiterals: true
BreakAfterAttributes: Leave
BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^<.*'
Priority: 1
SortPriority: 1
CaseSensitive: true
- Regex: '.*'
Priority: 3
SortPriority: 3
CaseSensitive: true
IncludeIsMainRegex: '([-_](test|unittest))?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertBraces: true
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
BinaryMinDigits: 0
Decimal: 0
DecimalMinDigits: 0
Hex: 0
HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
KeepEmptyLinesAtEOF: false
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Never
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
PPIndentWidth: 2
QualifierAlignment: Leave
RawStringFormats:
- Language: Cpp
Delimiters:
- cc
- CC
- cpp
- Cpp
- CPP
- 'c++'
- 'C++'
CanonicalDelimiter: ''
BasedOnStyle: google
- Language: TextProto
Delimiters:
- pb
- PB
- proto
- PROTO
EnclosingFunctions:
- EqualsProto
- EquivToProto
- PARSE_PARTIAL_TEXT_PROTO
- PARSE_TEST_PROTO
- PARSE_TEXT_PROTO
- ParseTextOrDie
- ParseTextProtoOrDie
- ParseTestProto
- ParsePartialTestProto
CanonicalDelimiter: pb
BasedOnStyle: google
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SkipMacroDefinitionBody: false
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterPlacementOperator: true
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParens: Never
SpacesInParensOptions:
InCStyleCasts: false
InConditionalStatements: false
InEmptyParentheses: false
Other: false
SpacesInSquareBrackets: false
Standard: Auto
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8
UseTab: Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:
- BOOST_PP_STRINGIZE
- CF_SWIFT_NAME
- NS_SWIFT_NAME
- PP_STRINGIZE
- STRINGIZE
...
2 changes: 1 addition & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Checks: '*include*,
# -hicpp-special-member-functions,
# -cppcoreguidelines-pro-bounds-pointer-arithmetic,
# -cppcoreguidelines-owning-memory,
WarningsAsErrors: ''
WarningsAsErrors: '*'
HeaderFilterRegex: '^(?!.*cppunit).*$'
# AnalyzeTemporaryDtors: false
FormatStyle: none
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ jobs:
sudo add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main"
sudo apt-get update
sudo apt-get install -y clang-18 clang-tidy-18
# clang-format-17
if: matrix.compiler == 'clang'

- name: Install Clang Format
run: sudo apt-get install -y clang-format-18
if: matrix.compiler == 'clang' && matrix.gc == 'GENERATIONAL'

- name: Build SOM VM
run: |
if [ "${{ matrix.compiler }}" = "clang" ]
Expand Down Expand Up @@ -67,6 +70,11 @@ jobs:
run: |
clang-tidy-18 --config-file=.clang-tidy src/**/*.cpp -- -fdiagnostics-absolute-paths -DGC_TYPE=${{ matrix.gc}} ${{ matrix.integers }} -DUNITTESTS
- name: Clang Format
if: matrix.compiler == 'clang' && matrix.gc == 'GENERATIONAL'
run: |
clang-format-18 --dry-run --style=file --Werror src/*.cpp src/**/*.cpp src/**/*.h
# Disabled because it's too slow with the sanitizers
# - name: Test SomSom
# run: |
Expand Down
10 changes: 4 additions & 6 deletions lint.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/bin/sh
CFLAGS+=' -fdiagnostics-absolute-paths'
# clang-tidy-mp-18 --config-file=.clang-tidy ./src/compiler/Lexer.cpp -- -I/opt/local/include/ -DGC_TYPE=COPYING -DUNITTESTS -fdiagnostics-absolute-paths

# -header-filter=.*
# src/**/*.cpp
clang-tidy-mp-18 --config-file=.clang-tidy src/**/*.cpp -- -I/opt/local/include/ -fdiagnostics-absolute-paths -DGC_TYPE=COPYING -DUNITTESTS
clang-format-mp-18 -i --style=file --Werror src/*.cpp src/**/*.cpp src/**/*.h
clang-tidy-mp-18 --config-file=.clang-tidy src/**/*.cpp -- \
-I/opt/local/include/ -fdiagnostics-absolute-paths \
-DGC_TYPE=GENERATIONAL -DUSE_TAGGING=false -DCACHE_INTEGER=false -DUNITTESTS
41 changes: 18 additions & 23 deletions src/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,55 +22,50 @@
THE SOFTWARE.
*/

#include <iostream>
#include <fstream>
#include <iostream>

#include "compiler/ClassGenerationContext.h"

#include "memory/Heap.h"

#include "misc/defs.h"

#include "vm/Universe.h"

#include "vmobjects/VMObject.h"
#include "vmobjects/ObjectFormats.h"
#include "vmobjects/VMArray.h"
#include "vmobjects/VMMethod.h"
#include "vmobjects/VMObject.h"
#include "vmobjects/VMString.h"
#include "vmobjects/VMArray.h"
#include "vmobjects/ObjectFormats.h"

int main(int argc, char** argv) {

cout << "This is SOM++" << endl;

if (GC_TYPE == GENERATIONAL)
if (GC_TYPE == GENERATIONAL) {
cout << "\tgarbage collector: generational" << endl;
else if (GC_TYPE == COPYING)
} else if (GC_TYPE == COPYING) {
cout << "\tgarbage collector: copying" << endl;
else if (GC_TYPE == MARK_SWEEP)
} else if (GC_TYPE == MARK_SWEEP) {
cout << "\tgarbage collector: mark-sweep" << endl;
else if (GC_TYPE == DEBUG_COPYING)
} else if (GC_TYPE == DEBUG_COPYING) {
cout << "\tgarbage collector: debug copying" << endl;
else
} else {
cout << "\tgarbage collector: unknown" << endl;
}

if (USE_TAGGING)
if (USE_TAGGING) {
cout << "\twith tagged integers" << endl;
else
} else {
cout << "\tnot tagging integers" << endl;
}

if (CACHE_INTEGER)
cout << "\tcaching integers from " << INT_CACHE_MIN_VALUE
<< " to " << INT_CACHE_MAX_VALUE << endl;
else
if (CACHE_INTEGER) {
cout << "\tcaching integers from " << INT_CACHE_MIN_VALUE << " to "
<< INT_CACHE_MAX_VALUE << endl;
} else {
cout << "\tnot caching integers" << endl;

}

cout << "--------------------------------------" << endl;


Universe::Start(argc, argv);

Universe::Quit(ERR_SUCCESS);
}

Loading

0 comments on commit 2dc1437

Please sign in to comment.