SwiftLint icon indicating copy to clipboard operation
SwiftLint copied to clipboard

Add `explicit_return` opt-in rule

Open m-chojnacki opened this issue 2 years ago • 6 comments

Add explicit_return opt-in rule that warns against omitting the return keyword inside closures, functions and getters. This rule provides behavior opposite to implicit_return and complements it. It's disabled by default and provides configurable return kinds and severity.

resolves https://github.com/realm/SwiftLint/issues/3632 resolves https://github.com/realm/SwiftLint/issues/3859

m-chojnacki avatar Mar 18 '22 10:03 m-chojnacki

19393 Warnings
:warning: Big PR
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:277:58: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:315:62: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:324:62: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:367:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:371:49: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:392:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:395:49: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:528:62: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:531:62: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Controllers/CustomVideoController.swift:550:62: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/Forecast.swift:178:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/Forecast.swift:237:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/GeoCoding.swift:92:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/OneCall.swift:211:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/OneCall.swift:274:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/OpenWeather.swift:174:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/API/OpenWeather.swift:232:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:321:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:347:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:377:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:419:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:450:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:465:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:471:63: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:512:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:546:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:563:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:665:66: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:679:36: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:679:60: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:690:57: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Cache.swift:777:70: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/PoiStringProvider.swift:232:48: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/PoiStringProvider.swift:232:69: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/PoiStringProvider.swift:236:48: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/PoiStringProvider.swift:236:69: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Thumbnails.swift:178:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/Thumbnails.swift:187:25: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoCache.swift:416:50: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoDownload.swift:103:39: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoDownload.swift:135:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoDownload.swift:260:64: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoDownload.swift:277:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Cache/VideoDownload.swift:284:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Downloads/AsynchronousOperation.swift:46:40: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Downloads/AsynchronousOperation.swift:47:50: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Extensions/DispatchQueue+Extension.swift:18:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Hardware/HardwareDetection.swift:145:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/ManifestLoader.swift:718:52: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/ManifestLoader.swift:948:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/SourceList.swift:186:25: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/SourceList.swift:195:25: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/SourceList.swift:331:66: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/SourceList.swift:94:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:103:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:104:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:108:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:109:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:113:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:114:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:118:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:119:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:125:31: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:126:31: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:129:31: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:130:31: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:136:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:137:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:140:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:141:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:17:25: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:193:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:194:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:198:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:199:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:202:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:203:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:206:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:207:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:210:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:211:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:214:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:215:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:218:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:219:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:255:103: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:255:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:324:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:358:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:380:34: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:411:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:412:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:428:48: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:527:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:532:38: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:67:29: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:70:29: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:80:36: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:80:80: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:82:36: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:82:80: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:84:36: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:84:80: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:86:36: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Sources/VideoList.swift:86:80: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Time/TimeManagement.swift:226:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Models/Time/TimeManagement.swift:31:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/AerialView.swift:325:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/AerialView.swift:554:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/ClockLayer.swift:51:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/CountdownLayer.swift:52:25: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/DateLayer.swift:51:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/DownloadIndicatorLayer.swift:55:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/DownloadIndicatorLayer.swift:58:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/LocationLayer.swift:135:27: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/MessageLayer.swift:109:17: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Layers/TimerLayer.swift:59:21: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/MainUI/VideoCellView.swift:59:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/CheckCellView.swift:124:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/InfoWeatherView.swift:170:33: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/InfoWeatherView.swift:170:9: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/InfoWeatherView.swift:171:29: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/PrefPanel/InfoWeatherView.swift:172:24: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Sources/ActionCellView.swift:26:73: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Aerial/Source/Views/Sources/ActionCellView.swift:35:69: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/First time setup/VideoFormatViewController.swift:104:59: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/FiltersViewController.swift:42:68: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/OverlaysViewController.swift:186:47: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/SourcesViewController.swift:281:69: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/SourcesViewController.swift:282:74: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/SourcesViewController.swift:316:55: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/SourcesViewController.swift:364:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/SourcesViewController.swift:79:61: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/Settings panels/TimeViewController.swift:233:13: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: This PR introduced a violation in Aerial: /Resources/MainUI/SidebarViewController.swift:249:65: warning: Explicit Return Violation: Prefer explicit returns in closures, functions and getters. (explicit_return)
:warning: Danger found 19393 violations with this PR. Due to GitHub's max issue comment size, the number shown has been truncated to 136.
12 Messages
:book: Linting Aerial with this PR took 1.14s vs 1.15s on master (0% faster)
:book: Linting Alamofire with this PR took 1.32s vs 1.31s on master (0% slower)
:book: Linting Firefox with this PR took 5.54s vs 5.49s on master (0% slower)
:book: Linting Kickstarter with this PR took 9.18s vs 9.08s on master (1% slower)
:book: Linting Moya with this PR took 0.61s vs 0.63s on master (3% faster)
:book: Linting Nimble with this PR took 0.52s vs 0.51s on master (1% slower)
:book: Linting Quick with this PR took 0.22s vs 0.22s on master (0% slower)
:book: Linting Realm with this PR took 11.96s vs 11.32s on master (5% slower)
:book: Linting SourceKitten with this PR took 0.41s vs 0.41s on master (0% slower)
:book: Linting Sourcery with this PR took 2.37s vs 2.36s on master (0% slower)
:book: Linting Swift with this PR took 4.08s vs 3.99s on master (2% slower)
:book: Linting WordPress with this PR took 9.84s vs 9.68s on master (1% slower)

Generated by :no_entry_sign: Danger

SwiftLintBot avatar Mar 18 '22 10:03 SwiftLintBot

@m-chojnacki this is an amazing first contribution, congratulations! this looks great, made some small suggestions - let me know what you think!

marcelofabri avatar Apr 17 '22 11:04 marcelofabri

@marcelofabri Thank you so much for the review! I uploaded according fixes to the code, and answered all the comments. Will be happy to make any further changes as well.

m-chojnacki avatar Apr 26 '22 14:04 m-chojnacki

@m-chojnacki, hi there! :-) Could you update the CHANGELOG.md file? I'll take a look at the PR and merge it.

otaviocc avatar Jul 29 '22 09:07 otaviocc

@otaviocc Hi! I rebased this PR on master, corrected the changelog as you suggested! :)

m-chojnacki avatar Jul 29 '22 09:07 m-chojnacki

Thanks @m-chojnacki for rebasing it and fixing the CHANGELOG :-)

I was going thru the code and there are some cases it might raise a violation when it shouldn't. For instance:

DispatchQueue.main.async { [weak self] in
    self?.updateUI()
}

or

func removeSubviews() {
    subviews.forEach { $0.removeFromSuperview() }
}

In both cases the closures return Void.

It might not be easy to get the information about the closure/function signature at all times, so having it as an optional rule isn't that of a big issue. I'm just concerned by the number of // swiftlint:disable* one might have to add to their codebase to prevent the violation in such cases (which are not that uncommon).

SwiftLint has a rule called explicit_self which throws a violation in cases where self isn't used in the context of a method or closure. This rule runs after the project compiles; it's an "analyzer" rule. Maybe that would be the way to cover all the cases for the explicit_return.

What's your take on this, @marcelofabri? If the current PR's OK for you, I can merge it.

otaviocc avatar Jul 29 '22 09:07 otaviocc

Aloha everyone, what's the status of this? We'd really benefit from having this available.

ppbdrinker avatar Aug 17 '23 10:08 ppbdrinker

I'm willing to move this forward. You too, @m-chojnacki? If so, let's start with rebasing the changes onto the current main branch.

SimplyDanny avatar Aug 26 '23 08:08 SimplyDanny

Hey @SimplyDanny, I am willing to move this forward and rebase it, I'm just worried how to handle cases mentioned in https://github.com/realm/SwiftLint/pull/3905#issuecomment-1199085814

m-chojnacki avatar Aug 28 '23 07:08 m-chojnacki

Hey @SimplyDanny, I am willing to move this forward and rebase it, I'm just worried how to handle cases mentioned in #3905 (comment)

Well, I agree this rule will cause a lot of false positives for closures. An Analyzer rule would be able to know which type a closure has and so reason whether a return is actually valid. However, Analyzer rules are very slow an require to compile a project in order to get type information. Therefore, I consider them as something additional. Your rule is a good starting point being sufficiently accurate and very fast. Its configuration allows to exclude closures completely if the rate of false positives would drive the rule otherwise too annoying.

That said, I suggest 3 things:

  • Don't enable analysis of closures by default.
  • If closures specify a return type explicitly, the rule may have enough information to reason about adding return or not.
  • Perhaps later add an Analyzer rule that is more accurate.

The implicit_return rule has meanwhile received support for subscripts and initializers. So these may be types you would like to consider in this rule as well.

SimplyDanny avatar Sep 02 '23 20:09 SimplyDanny