1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Objective-C][Xcode]GitレポジトリにはあるのにXcodeからは参照されてない素敵なファイルどもを駆逐する 駆逐したいな とりあえず頑張る

Last updated at Posted at 2021-08-31

忘れ去られちゃった子を見つけてあげる

はい。Xcodeはファイル削除するときに「参照のみ削除」なんてことができるので、
しばらくすると存在を忘れ去られるファイルというのが出てきます。

ごめんなさい。出てきました。僕が作ったんじゃないけど。

そんな奴らを大量のファイルから探し出します。

こんな感じ

proj=`find \`pwd\` -name "*.pbxproj" -print`

for file in `find . -name "*.h"|tr -d ' '` ; do
basename=`basename $file`;count=`grep -c $basename $proj`;if [ $count -eq 0 ] ;then echo $file;fi
done

ここで出力されてきたファイル名を頼りにファイルを実削除します。

なぜ tr -d ' ' でパスから空白を削除しているかというと、
[HogeHogeApp Watch Extension/Fuga.h] とかがあると、空白で分割されて
$fileに入ってくるからです。これうまくやる方法パッと思いつかなかったので。

同様に「参照されていないクラスのファイルを探す方法」

for file in `find . -name "*.h"|tr -d ' '` ; do
basename=`basename $file .h`;count=`grep -rl $basename *|wc -l`;if [ $count -le 3 ] ;then echo $file;fi
done

最低限、Fuga.h Fuga.m と project.pbxproj には名前があるはずなので、
それしかなかったら出力。.hしかないファイルとかも出てくるけどそれは目視で確認。
これで引っかからない子もいるけど、コメントとかもあるから、うん仕方ない。

# import "Hoge.h"

を探してあげた方がいいんじゃないの?とも思いますが、インポートはされずにStoryBoardから参照されてるだけの子もいるので。一応ね。

Swiftとかなら結構ツールがあるんだけど、Objective-Cはもう相手にされていないのか、なかなかツールがないんだよね。
AppCode買えっていう正論は置いておいて。

XcodeGenとかを使ってる場合は、それぞれよしなに。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?