🔧 Fixed: - Multi-device JSON sync now works (thanks Thomas!) - Restore from Server skipped files (timestamp bug) - No duplicate downloads - First MD sync after export now fast ⚡ Performance: - JSON sync: 12-14s → 2-3s - Hybrid timestamp + E-Tag optimization - Matches Markdown sync speed ✨ New: - Sync status UI in MainActivity - Content-based MD import - Debug logging improvements - SyncStateManager for sync coordination 🔧 Technical: - Clear lastSyncTimestamp on restore - Clear E-Tag caches on restore - E-Tag refresh after upload - Fixed timestamp update after MD export
137 lines
2.9 KiB
YAML
137 lines
2.9 KiB
YAML
# ⚡ v1.3.1: detekt Configuration
|
|
# Pragmatic rules for simple-notes-sync
|
|
|
|
build:
|
|
maxIssues: 100 # Allow existing issues for v1.3.1 release, fix in v1.4.0
|
|
excludeCorrectable: false
|
|
|
|
config:
|
|
validation: true
|
|
warningsAsErrors: false
|
|
|
|
comments:
|
|
CommentOverPrivateProperty:
|
|
active: false
|
|
UndocumentedPublicClass:
|
|
active: false
|
|
UndocumentedPublicFunction:
|
|
active: false
|
|
|
|
complexity:
|
|
ComplexCondition:
|
|
active: true
|
|
threshold: 5
|
|
CyclomaticComplexMethod:
|
|
active: true
|
|
threshold: 15
|
|
ignoreSingleWhenExpression: true
|
|
LargeClass:
|
|
active: true
|
|
threshold: 600 # Increased for WebDavSyncService
|
|
LongMethod:
|
|
active: true
|
|
threshold: 80 # Increased for sync methods
|
|
LongParameterList:
|
|
active: true
|
|
functionThreshold: 6
|
|
constructorThreshold: 7
|
|
NestedBlockDepth:
|
|
active: true
|
|
threshold: 5
|
|
TooManyFunctions:
|
|
active: true
|
|
thresholdInFiles: 25
|
|
thresholdInClasses: 25
|
|
thresholdInInterfaces: 20
|
|
thresholdInObjects: 20
|
|
thresholdInEnums: 10
|
|
|
|
empty-blocks:
|
|
EmptyCatchBlock:
|
|
active: true
|
|
allowedExceptionNameRegex: "_|(ignore|expected).*"
|
|
EmptyFunctionBlock:
|
|
active: true
|
|
ignoreOverridden: true
|
|
|
|
exceptions:
|
|
SwallowedException:
|
|
active: true
|
|
ignoredExceptionTypes:
|
|
- "InterruptedException"
|
|
- "MalformedURLException"
|
|
- "NumberFormatException"
|
|
- "ParseException"
|
|
TooGenericExceptionCaught:
|
|
active: true
|
|
exceptionNames:
|
|
- "Error"
|
|
- "Throwable"
|
|
allowedExceptionNameRegex: "_|(ignore|expected).*"
|
|
|
|
naming:
|
|
FunctionNaming:
|
|
active: true
|
|
functionPattern: "[a-zA-Z][a-zA-Z0-9]*"
|
|
VariableNaming:
|
|
active: true
|
|
variablePattern: "[a-z][A-Za-z0-9]*"
|
|
PackageNaming:
|
|
active: true
|
|
packagePattern: "[a-z]+(\\.[a-z][A-Za-z0-9]*)*"
|
|
|
|
performance:
|
|
SpreadOperator:
|
|
active: false # Spread operator is fine in most cases
|
|
|
|
potential-bugs:
|
|
CastToNullableType:
|
|
active: true
|
|
EqualsWithHashCodeExist:
|
|
active: true
|
|
UnconditionalJumpStatementInLoop:
|
|
active: true
|
|
|
|
style:
|
|
ForbiddenComment:
|
|
active: true
|
|
comments:
|
|
- "FIXME:"
|
|
- "STOPSHIP:"
|
|
allowedPatterns: ""
|
|
MagicNumber:
|
|
active: true
|
|
ignoreNumbers:
|
|
- "-1"
|
|
- "0"
|
|
- "1"
|
|
- "2"
|
|
- "100"
|
|
- "1000"
|
|
ignoreHashCodeFunction: true
|
|
ignorePropertyDeclaration: true
|
|
ignoreLocalVariableDeclaration: true
|
|
ignoreAnnotation: true
|
|
ignoreEnums: true
|
|
ignoreRanges: true
|
|
ignoreExtensionFunctions: true
|
|
MaxLineLength:
|
|
active: true
|
|
maxLineLength: 120
|
|
excludePackageStatements: true
|
|
excludeImportStatements: true
|
|
ReturnCount:
|
|
active: true
|
|
max: 4
|
|
excludedFunctions: []
|
|
excludeLabeled: true
|
|
excludeReturnFromLambda: true
|
|
excludeGuardClauses: true
|
|
UnusedImports:
|
|
active: true
|
|
UnusedPrivateMember:
|
|
active: true
|
|
allowedNames: "_.*"
|
|
WildcardImport:
|
|
active: false # Allow wildcard imports
|