MarcoEidinger / SwiftPlantUML-Xcode-Extension

Xcode Extension for generating class diagrams from Swift code (powered by PlantUML)
https://github.com/MarcoEidinger/SwiftPlantUML
MIT License
432 stars 23 forks source link
macos osx planttext plantuml plantuml-generating swift xcode xcode-extension xcode-plugin xcode-source-editor-extension

SwiftPlantUML

Build Swift 5.3 Twitter

SwiftPlantUML.app

Generate and view a class diagram for Swift code in Xcode or from the Finder.

Use the hosting macOS application to configure the diagram visualization.

The Source Editor Extension (as well as the Action extension) makes use of SwiftPlantUML Swift package.

To generate a large diagram from a project with Swift files across folders then I recommend using SwiftPlantUML as a command-line tool.

Features

Xcode

SwiftPlantUML Xcode Extension - Usage Demo

Finder

https://user-images.githubusercontent.com/4176826/218329052-b03ec650-d845-46a2-a31b-6d3817add52a.mp4

Example

SwiftPlantUML Xcode Extension - Usage Demo

Install

Homebrew

brew install swiftplantumlapp
Installation through Homebrew

Alternative

Enable Extension

Configure

Optional:

Preferences - Elements Preferences - Members Preferences - Others

Troubleshooting

The command "Open editable diagram in browser" is still busy

Xcode Source Code Extension initialization might take up ~ 30 seconds on initial launch.

If the prompt does not appear within 60 seconds

image

then check for a crash report related to XPC service in Console app of your MacOS.

CrashReportXPCServiceExample

If you see such crash report related to fatal error: Loading sourcekitd.framework/Versions/A/sourcekitd failed please check the installation path of Xcode. If it's installed under /Applications/Xcode.app, please run:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

If it's installed elsewhere, please replace the /Applications/Xcode.app path in the command above with the location where you've installed Xcode.

Technical Details

This Source Editor Extension makes use of XPC service to run the app sandboxed and use SwiftPlantUML (and its dependency SourceKitten). Source Editor Extensions using SourceKitten (either directly or indirectly) have to either run in a non-sandboxed app (and could not be distributed via the App Store) or use XPC service to outsource the use of SourceKitten to a different process.

Acknowledgements

These awesome blog posts helped me to dive into Xcode Source Editor Extensions and XPC services