Xcodeプロジェクトのソースコード規模を表示するCLIをSwiftSyntaxで作った

horimislime/xcstats というコマンドラインツールを作りました。Railsをやっている人なら「rake stats みたいなやつ」と言えば分かってもらえそうです。

開発しているプロダクトの規模感を話すとき、コードの行数だったりファイル数といった数字を指標とすることが多いです。 find とか wc コマンドを使えば簡単に出せるんですが、もっと細かい統計も出せると面白い発見がありそうだと思いこのツールを作りました。どういうものかは以下のスクリーンキャストをみると分かると思います。

asciicast
asciicast

使い方

homebrewでインストールできます。

brew tap horimislime/taproom brew install xcstats

あとはXcodeプロジェクトのrootで xcstats と打てば解析が始まります。現状プロジェクトrootに.xcodeprojが一つある場合しか考慮していないため、マルチプロジェクト構成の場合におかしくなるかもしれません...

実装について

現在Swiftのソースコードのみclassやstructの数といった情報が出るようになっていて、この解析には apple/swift-syntax を使っています。このツールを作ろうと思ったのは初コミットをさかのぼると2017年末ごろで、当時自分の要件を実装するにはSourceKitを扱うしかなくツラそう・・・と思いお蔵入りしてきました。しかし去年末ごろにSwiftSyntax - NSHipsterinamiy/SwiftRewriter を見かけてSwiftSyntaxで実装したところ、プロジェクト内で定義されている型の種類・数を算出するのはとても簡単に実現できました。このようなツール以外にも色々面白い応用ができそうです。