{"adoption": {"forks": 234, "observed_at": "2026-08-28T04:05:10.996187+00:00", "stars": 1611}, "canonical_url": "https://ross.abutalabs.com/products/wbblades", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Mach-O based ObjC & Swift useless classes, useless protocols, useless resources detection, packet size analysis, point-to-point crash resolution.基于Mach-O的ObjC & Swift无用类、无用协议、无用资源检测，包大小分析，点对点崩溃解析。", "domain": ["developer-tools", "mobile-development", "apple-ecosystem", "performance"], "enriched": true, "function": ["developer-tools", "parser", "reverse-engineering", "security", "static-site-generator"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["wuba/WBBlades"], "name": "wuba/WBBlades", "platform": ["cli", "cpp"], "pushed_at": "2024-08-05T09:49:02+00:00", "repo": "wuba/WBBlades", "stars": 1611, "tags": ["mach-o", "ios", "crash-symbolication", "app-thinning", "unused-code-detection", "dysm", "obj-c", "swift", "binary-analysis", "ipa-analysis", "macos"], "topics": ["mach-o", "crash-analysis", "dsym", "symbolication", "classdump", "gpt", "gpt-35-turbo", "macho", "ios"], "urls": [], "use_cases": ["find unused classes and resources in an iOS app to reduce binary size", "analyze how much size each static or dynamic library adds to an ipa", "symbolicate iOS crash logs with or without dSYM files", "resolve crash stacks from Bugly or Huawei platforms", "extract and hook classes from a Mach-O binary", "analyze ips crash files point-to-point for hard-to-reproduce crashes"], "what_it_is": "WBBlades is a set of Mach-O based tools for iOS development that detects useless ObjC/Swift classes, protocols, and resources, analyzes package size contributions of static and dynamic libraries, and performs point-to-point crash log symbolication. It also supports automatic class extraction and hooking from Mach-O binaries, with a visual macOS app interface.", "when_to_avoid": ["you work on Android or non-Apple platforms, since it only parses Mach-O binaries", "you need runtime performance profiling rather than static binary and crash analysis", "you want a cross-platform CI service rather than a macOS-based tool"], "when_to_choose": ["you need to symbolicate iOS crash logs with or without dSYM files", "you want to find unused classes, protocols, or resources in an iOS app to reduce package size", "you need to measure how much space each static or dynamic library contributes to an ipa", "you analyze crash stacks from Bugly or Huawei platforms"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wbblades", "repo": "wuba/WBBlades", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.996187+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:51:12.703988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c8063f0cd73fded2389f5f0d1a87f75918bba286a0063a50db645ecb8af7a6f", "fetched_at": "2026-08-28T04:05:10.996187+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuba/WBBlades"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2360, "days_push": 758, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}