pookjw/HermesEnabler
Enable Hermès Watch Faces on any Apple Watch devices
Objective-C★ 1,613+218 that day#4 on trending
C61.4/100
Duplication79
2.8% in swift, objectivec, c-header, bash, python, cDead coden/a
the languages dead code reads are under 5% of the codeComplexity48
63.3% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
2.83%duplicated code · 171 of 6,032 lines
17clones in code
29code files of 50 scanned
3.25%duplicated over all files · 26 clones
Most complex files
- HermesEnabler2/BQCore.m1042 cx
- HermesEnabler2/ContentModel.swift170 cx
- HermesCompanion/WatchConnectivity/WatchConnectivityManager.swift84 cx
- HermesEnabler2/WatchConnectivity/WatchConnectivityManager.swift45 cx
- Research/HealthKitProbe/HealthKitProbe/SchemaProbe.swift44 cx
- HermesEnabler2/BQRecoveryValidation.h43 cx
- HermesCompanion/WatchInstallationCard.swift23 cx
- Research/HealthKitProbe/HealthKitProbe/InputProbe.swift20 cx
- Research/HealthKitProbe/HealthKitProbe/HeartbeatValidation.swift19 cx
- HermesCompanion/BackupDetailView.swift18 cx
Dead code 29.79% unused · 1 findings
- Research/HealthKitProbe/test-rr.pyunused-file
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 13 lines in 4 placesobjectivec197 tokensHermesEnabler2/BQCore.m:1426–1438HermesEnabler2/BQCore.m:1528–1539HermesEnabler2/BQCore.m:1624–1635HermesEnabler2/BQCore.m:1711–1722
1426 if (err) *err = NSLocalizedString(@"The required face values are missing from the cache; no changes were made.", nil); 1427 return NO; 1428} 1429 1430void *mg = NULL, *io = NULL; 1431bq_native_libraries(&mg, &io); 1432void *(*createCache)(void *, const void **, const void **, long, void *) = mg ? dlsym(mg, "MGCreateInMemoryCache") : NULL; 1433CFTypeRef (*copyAnswer)(CFStringRef, void *, void *, int *) = mg ? dlsym(mg, "MGCopyAnswerWithCache") : NULL; 1434void (*destroyCache)(void *) = mg ? dlsym(mg, "MGCacheDestroy") : NULL; 1435uint32_t (*entryFromPath)(uint32_t, const char *) = io ? dlsym(io, "IORegistryEntryFromPath") : NULL;1528 if (err) *err = NSLocalizedString(@"Native control recovery is unavailable for this watchOS build.", nil); 1529 return NO; 1530} 1531void *mg = NULL, *io = NULL; 1532bq_native_libraries(&mg, &io); 1533void *(*createCache)(void *, const void **, const void **, long, void *) = mg ? dlsym(mg, "MGCreateInMemoryCache") : NULL; 1534CFTypeRef (*copyAnswer)(CFStringRef, void *, void *, int *) = mg ? dlsym(mg, "MGCopyAnswerWithCache") : NULL; 1535void (*destroyCache)(void *) = mg ? dlsym(mg, "MGCacheDestroy") : NULL; 1536uint32_t (*entryFromPath)(uint32_t, const char *) = io ? dlsym(io, "IORegistryEntryFromPath") : NULL; 1537CFTypeRef (*copyProperty)(uint32_t, CFStringRef, CFAllocatorRef, uint32_t) = io ? dlsym(io, "IORegistryEntryCreateCFProperty") : NULL;First 10 of 13 lines, the second copy on the right.
- 8 lines in 3 placesobjectivec78 tokens
1601 extra[@"MQJ1mlVrhOwaUUVJehJSVA"] = @YES; 1602} 1603plist[@"CacheData"] = data; 1604plist[@"CacheExtra"] = extra; 1605if (!BQSaveGestalt(plist, err)) return NO; 1606NSDictionary *saved = BQLoadGestalt(err); 1607if (![saved[@"CacheData"] isEqual:data] || ![saved[@"CacheExtra"] isEqual:extra]) { 1608 if (err) *err = NSLocalizedString(@"The control values were written but could not be verified.", nil);1674 return NO; 1675} 1676plist[@"CacheData"] = data; 1677plist[@"CacheExtra"] = extra; 1678if (!BQSaveGestalt(plist, err)) return NO; 1679NSDictionary *saved = BQLoadGestalt(err); 1680if (![saved[@"CacheData"] isEqual:data] || ![saved[@"CacheExtra"] isEqual:extra]) { 1681 if (err) *err = NSLocalizedString(@"The additional values were written but could not be verified.", nil); - 14 lines in 2 placesobjectivec95 tokens
2091if (!BQBackupExists()) { 2092 if (err) *err = NSLocalizedString(@"Back up MobileGestalt first.", nil); 2093 return NO; 2094} 2095 2096NSMutableDictionary *plist = BQLoadGestalt(err); 2097if (!plist) return NO; 2098id cacheExtra = plist[@"CacheExtra"]; 2099if (![cacheExtra isKindOfClass:[NSDictionary class]]) { 2100 if (err) *err = NSLocalizedString(@"MobileGestalt CacheExtra is missing or invalid.", nil);2149if (!BQBackupExists()) { 2150 if (err) *err = NSLocalizedString(@"Back up MobileGestalt first.", nil); 2151 return NO; 2152} 2153NSMutableDictionary *plist = BQLoadGestalt(err); 2154if (!plist) return NO; 2155id cacheExtra = plist[@"CacheExtra"]; 2156if (![cacheExtra isKindOfClass:[NSDictionary class]]) { 2157 if (err) *err = NSLocalizedString(@"MobileGestalt CacheExtra is missing or invalid.", nil); 2158 return NO;First 10 of 14 lines, the second copy on the right.
7 more
- 11 lines in 2 placesobjectivec93 tokens
- 16 lines in 2 placesobjectivec90 tokens
- 9 lines in 2 placesobjectivec84 tokens
- 9 lines in 2 placesobjectivec81 tokens
- 7 lines in 2 placesobjectivec75 tokens
- 7 lines in 2 placesobjectivec67 tokens
- 11 lines in 2 placesobjectivec67 tokens
Largest clones over all files, tests and data included
- 7 lines in 10 placesmarkdowndocs and examples124 tokens
1# HermesEnabler 2 2 3[English](README.md) · [Tiếng Việt](README.vi.md) · [한국어](README.ko.md) · [简体中文](README.zh-CN.md) · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · [Español](R… 4 5 6 7> Nur mit watchOS 27.0 bis watchOS 27.3 Beta 1 kompatibel.1# HermesEnabler 2 2 3[English](README.md) · [Tiếng Việt](README.vi.md) · [한국어](README.ko.md) · [简体中文](README.zh-CN.md) · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · [Español](R… 4 5 6 7> Compatible únicamente con watchOS 27.0 hasta watchOS 27.3 beta 1. - 13 lines in 4 placesobjectivec197 tokensHermesEnabler2/BQCore.m:1426–1438HermesEnabler2/BQCore.m:1528–1539HermesEnabler2/BQCore.m:1624–1635HermesEnabler2/BQCore.m:1711–1722
1426 if (err) *err = NSLocalizedString(@"The required face values are missing from the cache; no changes were made.", nil); 1427 return NO; 1428} 1429 1430void *mg = NULL, *io = NULL; 1431bq_native_libraries(&mg, &io); 1432void *(*createCache)(void *, const void **, const void **, long, void *) = mg ? dlsym(mg, "MGCreateInMemoryCache") : NULL; 1433CFTypeRef (*copyAnswer)(CFStringRef, void *, void *, int *) = mg ? dlsym(mg, "MGCopyAnswerWithCache") : NULL; 1434void (*destroyCache)(void *) = mg ? dlsym(mg, "MGCacheDestroy") : NULL; 1435uint32_t (*entryFromPath)(uint32_t, const char *) = io ? dlsym(io, "IORegistryEntryFromPath") : NULL;1528 if (err) *err = NSLocalizedString(@"Native control recovery is unavailable for this watchOS build.", nil); 1529 return NO; 1530} 1531void *mg = NULL, *io = NULL; 1532bq_native_libraries(&mg, &io); 1533void *(*createCache)(void *, const void **, const void **, long, void *) = mg ? dlsym(mg, "MGCreateInMemoryCache") : NULL; 1534CFTypeRef (*copyAnswer)(CFStringRef, void *, void *, int *) = mg ? dlsym(mg, "MGCopyAnswerWithCache") : NULL; 1535void (*destroyCache)(void *) = mg ? dlsym(mg, "MGCacheDestroy") : NULL; 1536uint32_t (*entryFromPath)(uint32_t, const char *) = io ? dlsym(io, "IORegistryEntryFromPath") : NULL; 1537CFTypeRef (*copyProperty)(uint32_t, CFStringRef, CFAllocatorRef, uint32_t) = io ? dlsym(io, "IORegistryEntryCreateCFProperty") : NULL;First 10 of 13 lines, the second copy on the right.
- 8 lines in 3 placesobjectivec78 tokens
1601 extra[@"MQJ1mlVrhOwaUUVJehJSVA"] = @YES; 1602} 1603plist[@"CacheData"] = data; 1604plist[@"CacheExtra"] = extra; 1605if (!BQSaveGestalt(plist, err)) return NO; 1606NSDictionary *saved = BQLoadGestalt(err); 1607if (![saved[@"CacheData"] isEqual:data] || ![saved[@"CacheExtra"] isEqual:extra]) { 1608 if (err) *err = NSLocalizedString(@"The control values were written but could not be verified.", nil);1674 return NO; 1675} 1676plist[@"CacheData"] = data; 1677plist[@"CacheExtra"] = extra; 1678if (!BQSaveGestalt(plist, err)) return NO; 1679NSDictionary *saved = BQLoadGestalt(err); 1680if (![saved[@"CacheData"] isEqual:data] || ![saved[@"CacheExtra"] isEqual:extra]) { 1681 if (err) *err = NSLocalizedString(@"The additional values were written but could not be verified.", nil); - 14 lines in 2 placesobjectivec95 tokens
- 11 lines in 2 placesobjectivec93 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| objectivec | 1 | 2,643 | 16 | 162 | 6.13% |
| swift | 24 | 3,060 | 1 | 9 | 0.29% |
| c-header | 2 | 186 | 0 | 0 | 0% |
| bash | 1 | 115 | 0 | 0 | 0% |
| python | 1 | 28 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| objectivec | 1 | 2,643 | 16 | 162 | 6.13% |
| markdown | 17 | 992 | 9 | 63 | 6.35% |
| swift | 24 | 3,060 | 1 | 9 | 0.29% |
| c-header | 2 | 186 | 0 | 0 | 0% |
| bash | 1 | 115 | 0 | 0 | 0% |
| python | 2 | 94 | 0 | 0 | 0% |
| c | 1 | 62 | 0 | 0 | 0% |
| markup | 1 | 34 | 0 | 0 | 0% |
| txt | 1 | 21 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Nov 13, 2026 | #4 | 1,613 (+218) | 50 | 7,207 | 26 | 3.25% | 2.83% | C 61.4 | a0101c4 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.