{"id":32150611,"url":"https://github.com/dral3x/stringslint","last_synced_at":"2026-02-19T16:34:34.380Z","repository":{"id":47451560,"uuid":"164240913","full_name":"dral3x/StringsLint","owner":"dral3x","description":"📱Ensure your localized strings are complete and never unused 👍","archived":false,"fork":false,"pushed_at":"2024-10-01T07:23:12.000Z","size":311,"stargazers_count":70,"open_issues_count":6,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-18T15:18:13.069Z","etag":null,"topics":["command-line-tool","ios","macos","swift","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dral3x.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-01-05T18:28:42.000Z","updated_at":"2025-09-11T17:16:41.000Z","dependencies_parsed_at":"2023-11-29T15:30:20.332Z","dependency_job_id":"edbce648-c976-4810-9c33-0888af7cc89f","html_url":"https://github.com/dral3x/StringsLint","commit_stats":{"total_commits":53,"total_committers":3,"mean_commits":"17.666666666666668","dds":0.05660377358490565,"last_synced_commit":"c7251a5c01bd6a67573355b5771c08d32ac58c2e"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/dral3x/StringsLint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dral3x%2FStringsLint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dral3x%2FStringsLint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dral3x%2FStringsLint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dral3x%2FStringsLint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dral3x","download_url":"https://codeload.github.com/dral3x/StringsLint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dral3x%2FStringsLint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280240303,"owners_count":26296527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line-tool","ios","macos","swift","xcode"],"created_at":"2025-10-21T10:10:44.391Z","updated_at":"2025-10-21T10:10:45.408Z","avatar_url":"https://github.com/dral3x.png","language":"Swift","readme":"# StringsLint\n\nA tool to ensure localized strings are complete and never unused.\n\nStringsLint hooks into your source files, specifically it scans:\n\n- .`strings` and .`stringsdict`\n- .`swift` and .`m`\n- .`xib` and `.storyboard`\n\n![Test Status](https://travis-ci.org/dral3x/StringsLint.svg?branch=master)\n\n![](assets/results.png)\n\nIf you **found a bug** or **have a feature request**, please open an issue.\nIf you **want to contribute**, submit a pull request.\n\n## Installation\n\n### Using [Mint](https://github.com/yonaskolb/Mint):\n\n```bash\nmint install dral3x/stringslint\n```\n\n### Using [Homebrew](http://brew.sh/)\n\n```bash\nbrew tap dral3x/dral3x\nbrew install stringslint\n```\n\n### Using [CocoaPods](https://cocoapods.org):\n\nSimply add the following line to your Podfile:\n\n```ruby\npod 'StringsLint'\n```\n\nThis will download the StringsLint binaries and dependencies in `Pods/` during your next\n`pod install` execution and will allow you to invoke it via `${PODS_ROOT}/StringsLint/stringslint`\nin your Script Build Phases.\n\nThis is the recommended way to install a specific version of StringsLint since it supports\ninstalling a pinned version rather than simply the latest (which is the case with Homebrew and Mint).\n\nNote that this will add the StringsLint binaries, its dependencies' binaries and the Swift binary\nlibrary distribution to the `Pods/` directory, so checking in this directory to SCM such as\ngit is discouraged.\n\n### Compiling from source:\n\nYou can build from source by cloning this project and running `make install` (Xcode 10.0 or later).\n\n## Usage\n\n### Xcode\n\nIntegrate StringsLint into an Xcode scheme to get warnings and errors displayed\nin the IDE. Just add a new \"Run Script Phase\" with:\n\n```bash\nif which stringslint \u003e/dev/null; then\n  stringslint\nelse\n  echo \"warning: StringsLint not installed, download from https://github.com/dral3x/StringsLint\"\nfi\n```\n\n![](assets/runscript.png)\n\nAlternatively, if you've installed StringsLint via CocoaPods the script should look like this:\n\n```bash\n\"${PODS_ROOT}/StringsLint/stringslint\"\n```\n\n### Command Line\n\n```\n$ stringslint help\nOVERVIEW: A tool to enforce Swift style and conventions.\n\nUSAGE: stringslint \u003csubcommand\u003e\n\nOPTIONS:\n  --version               Show the version.\n  -h, --help              Show help information.\n\nSUBCOMMANDS:\n  lint (default)          Print lint warnings and errors (default command)\n  version                 Display the current version of StringsLint\n\n  See 'stringslint help \u003csubcommand\u003e' for detailed help.\n```\n\nRun `stringslint` in the directory containing the files to lint.\nDirectories will be searched recursively.\n\n### GitHub Action\n\nCreate a new workflow file in your repo (for example: `.github/workflows/stringslint.yml`) with the following content:\n\n```\nname: StringsLint\n\non:\n  pull_request:\n    paths:\n      - '.github/workflows/stringslint.yml'\n      - '.stringslint.yml'\n      - '**/*.swift'\n      - '**/*.strings'\n      - '**/*.stringsdict'\n\njobs:\n  StringsLint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n\n      - name: GitHub Action for StringsLint\n        uses: dral3x/action-stringslint@1.1.9\n```\n\nMore details here https://github.com/dral3x/action-stringslint\n\n## Rules\n\nThere are few basic but important rules included.\nSee [Rules.md](Rules.md) for more information.\n\nYou can also check [Sources/StringsLintFramework/Rules/Lint](Sources/StringsLintFramework/Rules/Lint) directory to see their implementation.\n\nEach rule can emit violations. You can configure the severity of these violations (accepted values are `none`, `warning` and `error`).\n\nWhen a violation with severity error is emitted, the Xcode build will fail.\n\n### Configuration\n\nConfigure StringsLint by adding a `.stringslint.yml` file from the directory you'll run StringsLint from.\nYou can configure included and excluded file paths, extends some parsers capabilities and even turn off rules or specific files for each rule:\n\n```yaml\nincluded: # paths to include during linting. `--path` is ignored if present.\n  - Source\nexcluded: # paths to ignore during linting. Takes precedence over `included`.\n  - Carthage\n  - Pods\n  - Source/ExcludedFolder\n  - Source/ExcludedFile.swift\n  - Source/*/ExcludedFile.swift # Exclude files with a wildcard\n\n# Customize parsers\nobjc_parser:\n  implicit_macros:\n    - SPKLocalizedString # detect this custom macro\n\nxib_parser:\n  key_paths:\n    - textLocalized # keyPath used to localized UI elements\n\nswift_parser:\n  swiftui_implicit: false # disable implicit detection of SwiftUI localized strings\n\n# Customize specific rules\nmissing:\n  severity: error\n  ignored:\n    - Demo title\n\npartial:\n  severity: warning\n\nunused:\n  severity: note\n  ignored:\n    - NSAppleMusicUsageDescription # used by iOS directly\n\nmissing_comment:\n  severity: none\n```\n\n## License\n\n[MIT licensed.](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdral3x%2Fstringslint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdral3x%2Fstringslint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdral3x%2Fstringslint/lists"}