{"id":17180768,"url":"https://github.com/polac24/xcbuildanalyzer","last_synced_at":"2025-06-29T18:34:24.367Z","repository":{"id":196426830,"uuid":"655385421","full_name":"polac24/XCBuildAnalyzer","owner":"polac24","description":"SwiftUI application to analyze Xcode build system graph (Experimental)","archived":false,"fork":false,"pushed_at":"2024-02-09T01:36:01.000Z","size":3002,"stargazers_count":76,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-11T01:05:19.689Z","etag":null,"topics":["build-systems","build-tool","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polac24.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2023-06-18T18:25:05.000Z","updated_at":"2025-03-09T20:46:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"3df076bd-7260-42ca-9e0d-3e82a7b85717","html_url":"https://github.com/polac24/XCBuildAnalyzer","commit_stats":null,"previous_names":["polac24/xcbuildanalyzer"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polac24%2FXCBuildAnalyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polac24%2FXCBuildAnalyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polac24%2FXCBuildAnalyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polac24%2FXCBuildAnalyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polac24","download_url":"https://codeload.github.com/polac24/XCBuildAnalyzer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858056,"owners_count":20359271,"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","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":["build-systems","build-tool","xcode"],"created_at":"2024-10-15T00:31:33.840Z","updated_at":"2025-03-17T11:30:26.228Z","avatar_url":"https://github.com/polac24.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![icon](docs/img/icon.png) XCBuildAnalyzer\n\nmacOS app to inspect Xcode's build system graph\n\n## Description\n\nXCBuildAnalyzer is a standalone macOS app that renders the Xcode build system graph with some (limited) timing data. Analyzing the graph might be useful to understand dependencies between particular steps and why does build system invalidates previous build results. \n\nThe tool relies on a build manifest json file that is always generated in the project DerivedData directory.\n\n![Demo](docs/img/demo.gif)\n\n## Getting Started\n\n[Inspecting Xcode’s build system graph at ease](https://medium.com/@londeix/inspecting-xcodes-build-system-graph-at-ease-e96573d5d340) blogpost on medium.com\n\nTo analyze your most recent build system graph, drag\u0026drop a project file to the application area. Depending on a size of a project and nodes in a graph, it may take some time but usually should finish within couple of seconds.\n\nOn a left pane you will see graph nodes aggregated by target names (if applicable). The build graph is very often massive so to improve the reliability and performance, analyzing a subgraph is recommended.\n\nSelecting a node will render a view with all input and output nodes in the center view.\n\n![Main graph](docs/img/graph.png)\n\nIf a node has some hidden input or outputs that were skipped for brevity, the node's icon ⤡ or ⤢ allow expanding them.\n\n![Expanding nodes](docs/img/expand.png)\n\nSelecting multiple nodes (using ⌘ or ⇧) in a left view draws the possible subgraph that includes all nodes.\n\n\u003cdetails\u003e\n  \u003csummary\u003eScreenshot\u003c/summary\u003e\n\n![Expanding nodes](docs/img/subgraph.png)\n\n\u003c/details\u003e\n\nOn a right pane, you can inspect step details including input/output nodes, step tool, ENV variables etc.\n\n\u003cdetails\u003e\n  \u003csummary\u003eScreenshot\u003c/summary\u003e\n\n![Expanding nodes](docs/img/details.png)\n\n\u003c/details\u003e\n\nIf a build timing data was found along the build manifest, steps that were triggered in the most recent build have timing data. Look for 🔨 icons to found nodes that were recently executed.\n\n\u003cdetails\u003e\n  \u003csummary\u003eScreenshot\u003c/summary\u003e\n\n![Expanding nodes](docs/img/timing.png)\n\n\u003c/details\u003e\n\n\n![Expanding nodes](docs/img/executed.png)\n\n#### Cycles\n\nIf a cycle has been found in the graph, affected nodes have a warning sign. Selecting them draws the full cycle (with some few side nodes):\n\n![Expanding nodes](docs/img/cycle_warning.png)\n\n\u003cdetails\u003e\n  \u003csummary\u003eScreenshot\u003c/summary\u003e\n\n![Expanding nodes](docs/img/cycle.png)\n\n\u003c/details\u003e\n\n#### Comparing build graphs between builds\n\nBy default, XCBuildAnalyzer finds the most recent graph manifest found in the DerivedData, but if you want to analyze or compare specific build graphs, you can drag\u0026drop raw `manifest.json` files from `DerivedData/ProjectName/Build/Intermediates.noindex/XCBuildData/{build_hash}.xcbuilddata/manifest.json`. \n\n\u003e [!NOTE]\n\u003e Keep in mind for raw manifest mode, timing data is not available\n\n### Requirements\n\n* Building a project at least once with Xcode\n\n### Supported formats\n\n- [x] `*.xcodeproj`\n- [x] `.xcworkspace`\n- [x] `Package.swift`\n- [x] `manifest.json`\n\n### Installing\n\n#### Running from a binary\n\n* Open the most recent [released version](https://github.com/polac24/XCBuildAnalyzer/releases)\n* Download\u0026unzip the binary\n* Run XCBuildAnalyzer.app\n\n#### Building a project locally\n\n1. Download node.js dependencies, by calling `scripts/dependencies.sh` (npm required)\n1. open BuildAnalyzer.xcodeproj\n1. [Optional] pick BuildAnalyzer scheme\n1. Run the app with ⌘+R\n\n\n## Authors\n\nContributors names and contact info:\n\n* Bartosz Polaczyk [@polac24](https://github.com/polac24)\n\n## License\n\nThis project is licensed under the [Apache License](LICENSE)\n\n```\nCopyright (c) 2023 Bartosz Polaczyk.\n\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n```\n\n## Acknowledgments\n\n* [SQLite.swift](https://github.com/stephencelis/SQLite.swift)\n* [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift)\n* [d3-graphviz](https://github.com/magjac/d3-graphviz)\n\nThis product includes software developed by the \"Marcin Krzyzanowski\" (http://krzyzanowskim.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolac24%2Fxcbuildanalyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolac24%2Fxcbuildanalyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolac24%2Fxcbuildanalyzer/lists"}