execute method

  1. @override
Future<({String? reason, double score})> execute()
override

Executes the method and returns a score between 0 and 100

Implementation

@override
Future<({double score, String? reason})> execute() async {
  final info = await DeviceInfoPlugin().deviceInfo;
  if (info is! AndroidDeviceInfo) return (score: 0.0, reason: null);

  final fingerprint = info.fingerprint.toLowerCase();
  final host = info.host.toLowerCase();

  final hasJenkinsFingerprint = fingerprint.contains('jenkins');
  final hasCiHost = host.contains('jenkins') || host.contains('build');

  final ciSignals = <String>[
    if (hasJenkinsFingerprint) 'fingerprint=$fingerprint',
    if (hasCiHost) 'host=$host',
  ];

  if (ciSignals.length >= 2) {
    return (score: score, reason: '$reason (${ciSignals.join(", ")})');
  }

  return (score: 0.0, reason: null);
}