Basically, if you generally don't want people adding underscores to all private properties for composite datatypes there is a specific case that is so common it seems like it should be naturally allowed:
Prefixing backing variables
Example:
private var _count: AtomicInt<Int>
public var count: Int { _count.load(...} }
Yes this lint can easily be removed with // swift-format-ignore: NoLeadingUnderscores but in this specific case it can easily be determined why the prefix exists and should be allowed; if not always then in some new mode outside of the current true/false configuration.
Rule is simply (without considering multiple modes):
let userDefinedPropertyNamesInType: [String] = ...
let propertyName: String = ...
if propertyName.first == "_" and !userDefinedPropertyNamesInType.contains(propertyName.dropFirst()) {
// produce lint
}