Skip to content

Add support for generated Objective-C asset symbols#93

Open
Frank-728 wants to merge 2 commits intoonevcat:masterfrom
Frank-728:master
Open

Add support for generated Objective-C asset symbols#93
Frank-728 wants to merge 2 commits intoonevcat:masterfrom
Frank-728:master

Conversation

@Frank-728
Copy link
Copy Markdown

This PR extends FengNiao’s detection of generated asset symbols to Objective‑C and refactors string-to-symbol conversion to a shared helper. It ensures resources referenced via generated symbol constants (both Swift-style .name and Objective‑C-style ACImageNameFoo) are treated as used when scanning a project.

Why?

Projects that generate Objective‑C constants for assets (or use ObjC code referencing generated symbols) were previously not recognized, which could cause FengNiao to incorrectly mark used resources as unused. This PR closes that gap and consolidates the conversion logic to reduce duplication.

What changed?

  • Sources/FengNiaoKit/Extensions.swift
    Introduced convertToCamelCase(prefix:uppercaseFirst:) to centralize camel-case conversions.
    Simplified generatedAssetSymbolKey and added objcGeneratedAssetSymbolKey for Objective‑C symbol names (e.g. ACImageNameIcFlag).
  • Sources/FengNiaoKit/FengNiao.swift
    Detect resources referenced by generated symbols in both Swift (.name) and Objective‑C (ACImageName...).
    Broadened member-access search to consider Objective‑C file extensions (.m, .mm, .h) and dispatch per-file to the appropriate search rule.
  • Sources/FengNiaoKit/FileSearchRule.swift
    Added ObjCMemberAccessSearchRule to find Objective‑C generated symbol constants (e.g. ACImageNameIcFlag).
  • Tests/
    Added unit tests for ObjCMemberAccessSearchRule and for objcGeneratedAssetSymbolKey in SearchRuleTests.swift and StringExtensionsTests.swift.

Compatibility & notes?

Backward compatible: existing Swift detection remains unchanged; Objective‑C detection is additive.
A private helper was added; public APIs are unaffected.
Tests added to cover new behavior—please run the test suite and try scanning a sample project that contains Objective‑C references to generated asset symbols.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant