2025-10-08 12:23:45 -04:00
<?xml version="1.0" ?>
2025-09-15 05:47:03 -05:00
<SmellBaseline >
<ManuallySuppressedIssues />
<CurrentIssues >
<ID > CommentSpacing:BLEException.kt$BLEConnectionClosing$/// Our interface is being shut down</ID>
<ID > CommentSpacing:Constants.kt$/// a bool true means we expect this condition to continue until, false means device might come back</ID>
<ID > CommentSpacing:Coroutines.kt$/// Wrap launch with an exception handler, FIXME, move into a utility lib</ID>
2025-10-03 12:06:51 -04:00
<ID > ComposableParamOrder:Channel.kt$ChannelScreen</ID>
2025-10-06 14:30:18 -04:00
<ID > ComposableParamOrder:Channel.kt$EditChannelUrl</ID>
2025-10-12 08:22:46 -04:00
<ID > ComposableParamOrder:ConnectionsNavIcon.kt$ConnectionsNavIcon</ID>
2025-09-15 05:47:03 -05:00
<ID > ComposableParamOrder:EmptyStateContent.kt$EmptyStateContent</ID>
2025-10-03 12:06:51 -04:00
<ID > ComposableParamOrder:Share.kt$ShareScreen</ID>
2025-11-13 13:53:37 -06:00
<ID > CyclomaticComplexMethod:BleError.kt$BleError.Companion$fun from(exception: Throwable): BleError</ID>
2025-09-15 05:47:03 -05:00
<ID > CyclomaticComplexMethod:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)</ID>
2025-11-03 19:31:24 -05:00
<ID > CyclomaticComplexMethod:SettingsNavigation.kt$@Suppress("LongMethod") fun NavGraphBuilder.settingsGraph(navController: NavHostController)</ID>
2025-09-15 05:47:03 -05:00
<ID > EmptyClassBlock:DebugLogFile.kt$BinaryLogFile${ }</ID>
<ID > EmptyFunctionBlock:NopInterface.kt$NopInterface${ }</ID>
<ID > EmptyFunctionBlock:TrustAllX509TrustManager.kt$TrustAllX509TrustManager${}</ID>
<ID > FinalNewline:BLEException.kt$com.geeksville.mesh.service.BLEException.kt</ID>
<ID > FinalNewline:Coroutines.kt$com.geeksville.mesh.concurrent.Coroutines.kt</ID>
<ID > FinalNewline:DateUtils.kt$com.geeksville.mesh.android.DateUtils.kt</ID>
<ID > FinalNewline:DebugLogFile.kt$com.geeksville.mesh.android.DebugLogFile.kt</ID>
<ID > FinalNewline:InterfaceId.kt$com.geeksville.mesh.repository.radio.InterfaceId.kt</ID>
<ID > FinalNewline:InterfaceSpec.kt$com.geeksville.mesh.repository.radio.InterfaceSpec.kt</ID>
<ID > FinalNewline:MockInterfaceFactory.kt$com.geeksville.mesh.repository.radio.MockInterfaceFactory.kt</ID>
<ID > FinalNewline:NopInterface.kt$com.geeksville.mesh.repository.radio.NopInterface.kt</ID>
<ID > FinalNewline:NopInterfaceFactory.kt$com.geeksville.mesh.repository.radio.NopInterfaceFactory.kt</ID>
<ID > FinalNewline:ProbeTableProvider.kt$com.geeksville.mesh.repository.usb.ProbeTableProvider.kt</ID>
<ID > FinalNewline:RadioNotConnectedException.kt$com.geeksville.mesh.service.RadioNotConnectedException.kt</ID>
<ID > FinalNewline:SerialConnection.kt$com.geeksville.mesh.repository.usb.SerialConnection.kt</ID>
<ID > FinalNewline:SerialConnectionListener.kt$com.geeksville.mesh.repository.usb.SerialConnectionListener.kt</ID>
<ID > FinalNewline:SerialInterfaceFactory.kt$com.geeksville.mesh.repository.radio.SerialInterfaceFactory.kt</ID>
<ID > FinalNewline:TCPInterfaceFactory.kt$com.geeksville.mesh.repository.radio.TCPInterfaceFactory.kt</ID>
<ID > FinalNewline:UsbRepositoryModule.kt$com.geeksville.mesh.repository.usb.UsbRepositoryModule.kt</ID>
<ID > LambdaParameterEventTrailing:Channel.kt$onConfirm</ID>
<ID > LambdaParameterInRestartableEffect:Channel.kt$onConfirm</ID>
2025-09-30 18:22:22 -05:00
<ID > LargeClass:MeshService.kt$MeshService : Service</ID>
2025-09-15 05:47:03 -05:00
<ID > LongMethod:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)</ID>
<ID > MagicNumber:Contacts.kt$7</ID>
<ID > MagicNumber:Contacts.kt$8</ID>
<ID > MagicNumber:MQTTRepository.kt$MQTTRepository$512</ID>
<ID > MagicNumber:MeshService.kt$MeshService$0xffffffff</ID>
<ID > MagicNumber:MeshService.kt$MeshService$1000</ID>
<ID > MagicNumber:MeshService.kt$MeshService$1000.0</ID>
<ID > MagicNumber:MeshService.kt$MeshService$1000L</ID>
<ID > MagicNumber:MeshService.kt$MeshService$16</ID>
<ID > MagicNumber:MeshService.kt$MeshService$30</ID>
<ID > MagicNumber:MeshService.kt$MeshService$32</ID>
<ID > MagicNumber:MeshService.kt$MeshService$60000</ID>
<ID > MagicNumber:MeshService.kt$MeshService$8</ID>
<ID > MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$21972</ID>
<ID > MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$32809</ID>
<ID > MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$6790</ID>
<ID > MagicNumber:ProbeTableProvider.kt$ProbeTableProvider$9114</ID>
<ID > MagicNumber:SerialConnectionImpl.kt$SerialConnectionImpl$115200</ID>
<ID > MagicNumber:SerialConnectionImpl.kt$SerialConnectionImpl$200</ID>
<ID > MagicNumber:ServiceClient.kt$ServiceClient$500</ID>
<ID > MagicNumber:StreamInterface.kt$StreamInterface$0xff</ID>
<ID > MagicNumber:StreamInterface.kt$StreamInterface$3</ID>
<ID > MagicNumber:StreamInterface.kt$StreamInterface$4</ID>
<ID > MagicNumber:StreamInterface.kt$StreamInterface$8</ID>
<ID > MagicNumber:TCPInterface.kt$TCPInterface$1000</ID>
<ID > MagicNumber:TCPInterface.kt$TCPInterface$180</ID>
<ID > MagicNumber:TCPInterface.kt$TCPInterface$500</ID>
<ID > MagicNumber:UIState.kt$4</ID>
2025-11-06 12:27:21 -06:00
<ID > MaxLineLength:MeshService.kt$MeshService$"Config complete id mismatch: received=$configCompleteId expected one of [$configOnlyNonce,$nodeInfoNonce]"</ID>
<ID > MaxLineLength:MeshService.kt$MeshService$"setOwner Id: $id longName: ${longName.anonymize} shortName: $shortName isLicensed: $isLicensed isUnmessagable: $isUnmessagable"</ID>
2025-11-17 15:15:22 -06:00
<ID > MaxLineLength:MeshService.kt$MeshService.< no name provided> $"sendData dest=${p.to}, id=${p.id} < - ${bytes.size} bytes (connectionState=${connectionStateHolder.connectionState.value})"</ID>
2025-11-13 13:53:37 -06:00
<ID > MaxLineLength:NordicBleInterface.kt$NordicBleInterface$"[$address] Found fromNum: ${fromNumCharacteristic?.uuid}, ${fromNumCharacteristic?.instanceId}"</ID>
<ID > MaxLineLength:NordicBleInterface.kt$NordicBleInterface$"[$address] Found fromRadio: ${fromRadioCharacteristic?.uuid}, ${fromRadioCharacteristic?.instanceId}"</ID>
<ID > MaxLineLength:NordicBleInterface.kt$NordicBleInterface$"[$address] Found logRadio: ${logRadioCharacteristic?.uuid}, ${logRadioCharacteristic?.instanceId}"</ID>
<ID > MaxLineLength:NordicBleInterface.kt$NordicBleInterface$"[$address] Found toRadio: ${toRadioCharacteristic?.uuid}, ${toRadioCharacteristic?.instanceId}"</ID>
2025-09-15 05:47:03 -05:00
<ID > ModifierClickableOrder:Channel.kt$clickable(onClick = onClick)</ID>
<ID > ModifierMissing:BLEDevices.kt$BLEDevices</ID>
<ID > ModifierMissing:Channel.kt$ChannelScreen</ID>
<ID > ModifierMissing:Contacts.kt$ContactListView</ID>
<ID > ModifierMissing:Contacts.kt$ContactsScreen</ID>
<ID > ModifierMissing:Contacts.kt$SelectionToolbar</ID>
<ID > ModifierMissing:EmptyStateContent.kt$EmptyStateContent</ID>
<ID > ModifierMissing:Main.kt$MainScreen</ID>
<ID > ModifierMissing:NetworkDevices.kt$NetworkDevices</ID>
<ID > ModifierMissing:Share.kt$ShareScreen</ID>
<ID > MutableStateAutoboxing:Contacts.kt$mutableStateOf(2)</ID>
<ID > NestedBlockDepth:MeshService.kt$MeshService$private fun handleReceivedAdmin(fromNodeNum: Int, a: AdminProtos.AdminMessage)</ID>
<ID > NestedBlockDepth:MeshService.kt$MeshService$private fun handleReceivedData(packet: MeshPacket)</ID>
<ID > NewLineAtEndOfFile:BLEException.kt$com.geeksville.mesh.service.BLEException.kt</ID>
<ID > NewLineAtEndOfFile:Coroutines.kt$com.geeksville.mesh.concurrent.Coroutines.kt</ID>
<ID > NewLineAtEndOfFile:DateUtils.kt$com.geeksville.mesh.android.DateUtils.kt</ID>
<ID > NewLineAtEndOfFile:DebugLogFile.kt$com.geeksville.mesh.android.DebugLogFile.kt</ID>
<ID > NewLineAtEndOfFile:InterfaceId.kt$com.geeksville.mesh.repository.radio.InterfaceId.kt</ID>
<ID > NewLineAtEndOfFile:InterfaceSpec.kt$com.geeksville.mesh.repository.radio.InterfaceSpec.kt</ID>
<ID > NewLineAtEndOfFile:MockInterfaceFactory.kt$com.geeksville.mesh.repository.radio.MockInterfaceFactory.kt</ID>
<ID > NewLineAtEndOfFile:NopInterface.kt$com.geeksville.mesh.repository.radio.NopInterface.kt</ID>
<ID > NewLineAtEndOfFile:NopInterfaceFactory.kt$com.geeksville.mesh.repository.radio.NopInterfaceFactory.kt</ID>
<ID > NewLineAtEndOfFile:ProbeTableProvider.kt$com.geeksville.mesh.repository.usb.ProbeTableProvider.kt</ID>
<ID > NewLineAtEndOfFile:RadioNotConnectedException.kt$com.geeksville.mesh.service.RadioNotConnectedException.kt</ID>
<ID > NewLineAtEndOfFile:SerialConnection.kt$com.geeksville.mesh.repository.usb.SerialConnection.kt</ID>
<ID > NewLineAtEndOfFile:SerialConnectionListener.kt$com.geeksville.mesh.repository.usb.SerialConnectionListener.kt</ID>
<ID > NewLineAtEndOfFile:SerialInterfaceFactory.kt$com.geeksville.mesh.repository.radio.SerialInterfaceFactory.kt</ID>
<ID > NewLineAtEndOfFile:TCPInterfaceFactory.kt$com.geeksville.mesh.repository.radio.TCPInterfaceFactory.kt</ID>
<ID > NewLineAtEndOfFile:UsbRepositoryModule.kt$com.geeksville.mesh.repository.usb.UsbRepositoryModule.kt</ID>
<ID > NoBlankLineBeforeRbrace:DebugLogFile.kt$BinaryLogFile$ </ID>
<ID > NoBlankLineBeforeRbrace:NopInterface.kt$NopInterface$ </ID>
<ID > NoConsecutiveBlankLines:Constants.kt$ </ID>
<ID > NoConsecutiveBlankLines:DebugLogFile.kt$ </ID>
<ID > NoEmptyClassBody:DebugLogFile.kt$BinaryLogFile${ }</ID>
<ID > NoSemicolons:DateUtils.kt$DateUtils$;</ID>
<ID > OptionalAbstractKeyword:SyncContinuation.kt$Continuation$abstract</ID>
<ID > ParameterNaming:Contacts.kt$onDeleteSelected</ID>
<ID > ParameterNaming:Contacts.kt$onMuteSelected</ID>
<ID > ParameterNaming:UsbDevices.kt$onDeviceSelected</ID>
<ID > PreviewPublic:Channel.kt$ModemPresetInfoPreview</ID>
<ID > PreviewPublic:EmptyStateContent.kt$EmptyStateContentPreview</ID>
<ID > RethrowCaughtException:SyncContinuation.kt$Continuation$throw ex</ID>
<ID > SwallowedException:Exceptions.kt$ex: Throwable</ID>
<ID > SwallowedException:NsdManager.kt$ex: IllegalArgumentException</ID>
<ID > SwallowedException:ServiceClient.kt$ServiceClient$ex: IllegalArgumentException</ID>
<ID > SwallowedException:TCPInterface.kt$TCPInterface$ex: SocketTimeoutException</ID>
<ID > TooGenericExceptionCaught:Exceptions.kt$ex: Throwable</ID>
<ID > TooGenericExceptionCaught:MQTTRepository.kt$MQTTRepository$ex: Exception</ID>
<ID > TooGenericExceptionCaught:MeshService.kt$MeshService$ex: Exception</ID>
2025-10-08 12:23:45 -04:00
<ID > TooGenericExceptionCaught:MeshService.kt$MeshService.< no name provided> $ex: Exception</ID>
2025-11-06 12:27:21 -06:00
<ID > TooGenericExceptionCaught:NordicBleInterface.kt$NordicBleInterface$e: Exception</ID>
<ID > TooGenericExceptionCaught:NordicBleInterface.kt$NordicBleInterface$t: Throwable</ID>
<ID > TooGenericExceptionCaught:RadioInterfaceService.kt$RadioInterfaceService$t: Throwable</ID>
2025-09-15 05:47:03 -05:00
<ID > TooGenericExceptionCaught:SyncContinuation.kt$Continuation$ex: Throwable</ID>
<ID > TooGenericExceptionCaught:TCPInterface.kt$TCPInterface$ex: Throwable</ID>
<ID > TooGenericExceptionThrown:MeshService.kt$MeshService$throw Exception("Can't set user without a NodeInfo")</ID>
2025-10-08 12:23:45 -04:00
<ID > TooGenericExceptionThrown:MeshService.kt$MeshService.< no name provided> $throw Exception("Port numbers must be non-zero!")</ID>
2025-09-15 05:47:03 -05:00
<ID > TooGenericExceptionThrown:ServiceClient.kt$ServiceClient$throw Exception("Haven't called connect")</ID>
<ID > TooGenericExceptionThrown:ServiceClient.kt$ServiceClient$throw Exception("Service not bound")</ID>
<ID > TooGenericExceptionThrown:SyncContinuation.kt$SyncContinuation$throw Exception("SyncContinuation timeout")</ID>
<ID > TooGenericExceptionThrown:SyncContinuation.kt$SyncContinuation$throw Exception("This shouldn't happen")</ID>
2025-09-30 18:22:22 -05:00
<ID > TooManyFunctions:MeshService.kt$MeshService : Service</ID>
2025-10-08 12:23:45 -04:00
<ID > TooManyFunctions:MeshService.kt$MeshService$< no name provided> : Stub</ID>
2025-11-06 12:27:21 -06:00
<ID > TooManyFunctions:NordicBleInterface.kt$NordicBleInterface : IRadioInterface</ID>
2025-09-30 18:22:22 -05:00
<ID > TooManyFunctions:RadioInterfaceService.kt$RadioInterfaceService</ID>
<ID > TooManyFunctions:UIState.kt$UIViewModel : ViewModel</ID>
2025-09-15 05:47:03 -05:00
<ID > TopLevelPropertyNaming:Constants.kt$const val prefix = "com.geeksville.mesh"</ID>
<ID > UtilityClassWithPublicConstructor:NetworkRepositoryModule.kt$NetworkRepositoryModule</ID>
<ID > ViewModelForwarding:Main.kt$VersionChecks(uIViewModel)</ID>
</CurrentIssues>
</SmellBaseline>