Skip to content

Comments

Add disallow_default_parameter opt-in rule#6506

Open
William-Laverty wants to merge 3 commits intorealm:mainfrom
William-Laverty:disallow-default-parameter
Open

Add disallow_default_parameter opt-in rule#6506
William-Laverty wants to merge 3 commits intorealm:mainfrom
William-Laverty:disallow-default-parameter

Conversation

@William-Laverty
Copy link

New Rule

Adds a new opt-in rule disallow_default_parameter that flags default parameter values on functions with certain access levels.

Motivation

As described in #6488, default parameter values on non-public functions can mask bugs when parameters aren't properly forwarded. This rule enforces explicit parameterization at internal API boundaries while allowing defaults on public APIs where consumers benefit from convenience.

Configuration

  • disallowed_access_levels: Array of access levels to flag. Default: ["private", "internal"]
  • Supported values: private, fileprivate, internal, package
disallow_default_parameter:
  disallowed_access_levels:
    - private
    - internal
    - package

Examples

Triggering (default config):

private func foo(bar: Int = 0) {}  // ⚠️
func foo(bar: Int = 0) {}          // ⚠️ (implicit internal)
internal func foo(bar: Int = 0) {} // ⚠️

Non-triggering:

public func foo(bar: Int = 0) {}   // ✅ public is always allowed
private func foo(bar: Int) {}      // ✅ no default

Closes #6488

@SwiftLintBot
Copy link

SwiftLintBot commented Feb 20, 2026

12312 Warnings
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/ISSoundAdditions/SoundOutputManager+Goodies.swift:17:61: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/ISSoundAdditions/SoundOutputManager+Goodies.swift:17:91: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/ISSoundAdditions/SoundOutputManager+Goodies.swift:29:61: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/ISSoundAdditions/SoundOutputManager+Goodies.swift:29:91: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/ISSoundAdditions/SoundOutputManager+Goodies.swift:45:80: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:29:70: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:41:28: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:52:47: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:84:70: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:96:22: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:97:24: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:98:26: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:111:47: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:149:70: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:161:45: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:162:22: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:163:37: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:164:21: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:165:23: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/CustomVideoFolders.swift:180:47: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Extensions/DispatchQueue+Extension.swift:13:42: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Extensions/DispatchQueue+Extension.swift:13:75: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Extensions/DispatchQueue+Extension.swift:13:108: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:97:72: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:107:68: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:107:92: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:118:69: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:118:91: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:165:55: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:227:56: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:255:49: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Models/Aerial.swift:286:59: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/DisplayView.swift:23:41: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/DisplayView.swift:23:71: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/AnimationLayer.swift:68:30: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/Weather/ConditionSymbolLayer.swift:86:78: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/Weather/ConditionSymbolLayer.swift:121:90: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Example/Source/AppDelegate.swift:36:106: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/RequestTaskMap.swift:39:53: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/RequestTaskMap.swift:40:53: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/RequestTaskMap.swift:41:81: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/DataStreamRequest.swift:125:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/DataStreamRequest.swift:151:42: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/Session.swift:1235:82: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/DownloadRequest.swift:149:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/WebSocketRequest.swift:110:32: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/WebSocketRequest.swift:110:63: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/WebSocketRequest.swift:110:104: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/WebSocketRequest.swift:150:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/Response.swift:430:77: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/Response.swift:431:48: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/UploadRequest.swift:68:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/DataRequest.swift:54:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Features/OfflineRetrier.swift:111:75: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/Request.swift:276:19: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Core/Request.swift:535:33: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Extensions/OperationQueue+Alamofire.swift:37:57: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Extensions/OperationQueue+Alamofire.swift:38:55: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Extensions/OperationQueue+Alamofire.swift:39:54: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Extensions/OperationQueue+Alamofire.swift:40:36: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Extensions/OperationQueue+Alamofire.swift:41:43: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Features/URLEncodedFormEncoder.swift:494:38: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Source/Features/EventMonitor.swift:331:31: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/InspectorEventMonitor.swift:48:24: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/InspectorEventMonitor.swift:48:72: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/DataStreamTests.swift:1252:50: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/RequestInterceptorTests.swift:667:77: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/RequestInterceptorTests.swift:668:59: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/BaseTestCase.swift:92:54: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/BaseTestCase.swift:96:61: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:38:52: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:65:35: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:65:75: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:114:32: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:115:45: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:116:39: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:117:51: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:118:32: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/SessionTests.swift:119:40: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/ResponseSerializationTests.swift:1402:61: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:151:48: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:151:75: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:175:49: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:175:76: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:179:39: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:179:68: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:184:54: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:184:81: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:209:54: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:216:61: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:251:72: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:251:108: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:257:45: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:258:77: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:259:50: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:267:43: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:350:42: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:351:50: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:352:40: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:353:57: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:354:51: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:355:52: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:367:76: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:368:82: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:369:74: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:370:91: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:371:85: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:372:86: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:383:79: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:388:46: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:389:63: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:390:63: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:391:57: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:392:58: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:403:63: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:404:63: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:405:57: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:413:77: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:414:83: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:415:75: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:416:92: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:417:86: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:418:87: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:419:98: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:432:43: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:433:51: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:434:41: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:435:58: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:436:52: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:437:53: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:438:64: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:451:58: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:452:52: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:453:64: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:462:39: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:463:56: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:464:50: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:465:42: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/TestHelpers.swift:466:51: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/RetryPolicyTests.swift:138:37: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/RetryPolicyTests.swift:138:62: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/WebSocketTests.swift:694:44: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/WebSocketTests.swift:732:73: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/WebSocketTests.swift:733:66: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ This PR introduced a violation in Alamofire: /Tests/AuthenticationInterceptorTests.swift:40:34: Warning: Default parameter values should not be used in 'internal' functions (disallow_default_parameter)
⚠️ Danger found 12312 violations with this PR. Due to GitHub's max issue comment size, the number shown has been truncated to 145.
19 Messages
📖 Building this branch resulted in a binary size of 27316.37 KiB vs 27274.32 KiB when built on main (0% larger).
📖 Linting Aerial with this PR took 0.78 s vs 0.81 s on main (3% faster).
📖 Linting Alamofire with this PR took 1.04 s vs 1.05 s on main (0% faster).
📖 Linting Brave with this PR took 7.21 s vs 7.15 s on main (0% slower).
📖 Linting DuckDuckGo with this PR took 25.64 s vs 25.56 s on main (0% slower).
📖 Linting Firefox with this PR took 11.79 s vs 11.72 s on main (0% slower).
📖 Linting Kickstarter with this PR took 8.04 s vs 8.02 s on main (0% slower).
📖 Linting Moya with this PR took 0.48 s vs 0.46 s on main (4% slower).
📖 Linting NetNewsWire with this PR took 2.48 s vs 2.43 s on main (2% slower).
📖 Linting Nimble with this PR took 0.69 s vs 0.69 s on main (0% slower).
📖 Linting PocketCasts with this PR took 7.63 s vs 7.58 s on main (0% slower).
📖 Linting Quick with this PR took 0.45 s vs 0.45 s on main (0% slower).
📖 Linting Realm with this PR took 2.99 s vs 2.97 s on main (0% slower).
📖 Linting Sourcery with this PR took 1.87 s vs 1.84 s on main (1% slower).
📖 Linting Swift with this PR took 4.61 s vs 4.6 s on main (0% slower).
📖 Linting SwiftLintPerformanceTests with this PR took 0.35 s vs 0.35 s on main (0% slower).
📖 Linting VLC with this PR took 1.19 s vs 1.18 s on main (0% slower).
📖 Linting Wire with this PR took 18.46 s vs 18.39 s on main (0% slower).
📖 Linting WordPress with this PR took 12.52 s vs 12.45 s on main (0% slower).

Generated by 🚫 Danger

Adds a new opt-in rule that flags default parameter values on functions
with certain access levels. By default, it disallows defaults on private
and internal functions, encouraging explicit parameter passing at non-public
API boundaries.

Configurable via `disallowed_access_levels` to target any combination of
`private`, `fileprivate`, `internal`, and `package`.

Closes realm#6488
@William-Laverty William-Laverty force-pushed the disallow-default-parameter branch from 26e530a to 0081fe6 Compare February 22, 2026 09:08
Copy link
Collaborator

@SimplyDanny SimplyDanny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution!

There are a few remarks I'd like to have addressed before merging.

name: "Disallow Default Parameter",
description: "Default parameter values should not be used in functions with certain access levels",
kind: .idiomatic,
nonTriggeringExamples: DisallowDefaultParameterRuleExamples.nonTriggeringExamples,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there aren't too many examples, it's okay to inline them here.

static let description = RuleDescription(
identifier: "disallow_default_parameter",
name: "Disallow Default Parameter",
description: "Default parameter values should not be used in functions with certain access levels",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description: "Default parameter values should not be used in functions with certain access levels",
description: "Default parameter values should not be used in functions with certain access levels.",

and use a shorter reason with every violation mentioning the access level like

"Default parameter values should not be used in '<visibility>' functions"

identifier: "disallow_default_parameter",
name: "Disallow Default Parameter",
description: "Default parameter values should not be used in functions with certain access levels",
kind: .idiomatic,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fits better:

Suggested change
kind: .idiomatic,
kind: .lint,


private func collectViolations(
modifiers: DeclModifierListSyntax,
signature: FunctionSignatureSyntax
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you use ParameterClauseSyntax here, you can implement the case for SubscriptDeclSyntax exactly like the other two.

) {
guard matchesDisallowedAccessLevel(modifiers) else { return }
for param in signature.parameterClause.parameters where param.defaultValue != nil {
violations.append(param.defaultValue!.positionAfterSkippingLeadingTrivia)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to have the default parameter unwrapped in an optional binding instead of relying on the where implicitly.

key: "disallowed_access_levels",
postprocessor: { $0 = Set($0.sorted()) }
)
private(set) var disallowedAccessLevels: Set<AccessLevel> = [.private, .internal]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you suggest these two as defaults?

private(set) var severityConfiguration = SeverityConfiguration<Parent>(.warning)
@ConfigurationElement(
key: "disallowed_access_levels",
postprocessor: { $0 = Set($0.sorted()) }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Postprocessor can be removed. Neither order nor uniqueness are important.

Incidentally, with Set($0.sorted()) sorting would have no effect. What you want is Set($0).sorted(), but then disallowedAccessLevels would need to be a list.

- Change kind from .idiomatic to .lint
- Use per-violation reason with access level name
- Unify subscript handling via ParameterClauseSyntax
- Use optional binding instead of where + force unwrap
- Remove postprocessor from configuration
- Default to [.internal] only (most common implicit level)
- Inline examples into rule description
- Add CHANGELOG entry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rule Request: disallow_default_parameter

3 participants