忘れ去られちゃった子を見つけてあげる
はい。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とかを使ってる場合は、それぞれよしなに。