A command-line tool and Swift package that generates PlantUML class diagrams from Swift source code.
SwiftPlantUML is a command-line tool and Swift package that generates UML class diagrams from Swift source code. It analyzes Swift files to visualize classes, structs, protocols, enums, and extensions, along with their members and relationships, helping developers document and understand project architecture.
Swift developers, iOS/macOS engineers, and software architects who need to visualize, document, or communicate the structure of their Swift codebases.
It provides a native Swift solution for diagram generation, offering deep integration with the Swift toolchain, flexible configuration, and multiple output options, making it more tailored and efficient for Swift projects compared to generic UML tools.
A command-line tool and Swift Package for generating class diagrams powered by PlantUML
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages SourceKit for precise parsing of Swift types, including handling type inference with SDK specification, ensuring diagrams accurately reflect code structure.
Offers YAML-based configuration for including/excluding files, filtering by access level, and customizing themes, allowing tailored diagram output without code changes.
Supports CLI, Swift package dependency, and an Xcode extension, making it easy to integrate into existing Swift development workflows for on-demand diagram generation.
Provides configurable ways to show, merge, or hide Swift extensions in diagrams, reducing visual clutter while maintaining accuracy for complex codebases.
Only generates class diagrams; rendering associations between elements is a planned improvement, not yet implemented, restricting diagrammatic scope.
Requires specific Swift toolchain setup and can fail with multiple Swift versions, as noted in the 'Working with Multiple Swift Versions' section, adding complexity.
The project is at version 0.x, so the public API is not stable and may introduce breaking changes, as warned in the Swift package documentation.