

こんにちは。

現在運用中のWebサイトで、jQueryを使ってコードを書いている箇所を探しています。

今のところ、htmlファイルをテキストファイルで開いて「$(」をキーにして検索をしています。

しかしながら、htmlやPHPのファイルが沢山あり苦痛になってきました。

jQueryを使っている箇所を探しだす良い方法はないものでしょうか？  
また、ツールなどがあったら教えてください。

どうぞ宜しくお願い致します。

P.S.  
作業環境（開発環境含む）：Windows7Pro  
公開しているWebサイト：レンタルサーバー（CentOS）

他、HTMLやPHPのファイルはFTPソフトを使って、自分のパソコンにダウンロードして作業を行っています。


CC BY-SA 3.0
2015-01-26T08:55:30.143
5324
2015-01-29T11:54:08.847
2015-01-27T00:49:33.090
49
7634
question
javascript jquery windows
jQueryを使っている箇所を簡単に調べられる方法はありませんか？


MacやLinuxでは`grep`を使う場面なのですが、Windowsには標準で用意されていませんので代替になるソフトを使ってはいかがでしょうか？

いくつか上げておきます。

  * `cygwin`  
Unix関係のコマンドをWindowsで使えるようになります。

コマンドは該当のディレクトリにコマンドライン上で移動して

[code]

    grep -r --include=*.html --include=*.php --include=*.htm --include=*.js "$("
    
[/code]

になります。

  * [`Windows Grep`](http://www.wingrep.com/features.htm)  
使用していないのですが、Windows上でGUIを使って`grep`が使えるようです。

  * [`xyzzy`](http://xyzzy-022.github.io/)

エディタ内の機能に`grep`が実装されています。  
起動後に`Alt + x`でコマンド入力を受け付ける状態になりますので`grep-dialog`と入力すると検索用のダイアログが開きます。

詳しい解説はこちらにあるものを参考にしてください。  
<http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fgrep>


CC BY-SA 3.0
2015-01-26T15:53:41.877
5367
2015-01-26T15:53:41.877
3271
5324
answer


`grep`は既に紹介されているので  
ややマイナーですが、より直感的に使える`ack`や`ag`、`pt`といった代替ツールを紹介します。  
これらはどれも

[code]

    $ <コマンド名> <検索したいパターン> <検索したいディレクトリ>
    
[/code]

で使うことができます。  
`ack`を例にとると、コマンドラインを開いて検索対象ファイルのフォルダに移動後に

[code]

    $ ack "$(" .
    
[/code]

とすると、該当ファイルのヒットした箇所が表示されるといった具合です。

それぞれのツールについて`Windows`向けの導入方法を示します。

### ack

[Chocolatey Gallery | Ack! 2.14](https://chocolatey.org/packages/ack)

`Chocolatey`という`Windows`向けパッケージマネージャを導入するのがおそらくいちばん簡単です。このツールを導入するには[Chocolatey
Gallery](https://chocolatey.org/)のトップページにあるコマンドラインあるいは`PowerShell`用インストールコマンドをコピペして、手元の環境で実行してください。  
以降、`choco`コマンドが使えるようになります。`ack`は

[code]

    $ choco install ack
    
[/code]

で導入可能です。

### ag (The Silver Seacher)

`ack`と同機能で、より高速であると謳っているツールです。`ack`同様に`Chocolatey`から利用可能です。(が、古いです)

[The Silver Searcher windows port](http://blog.kowalczyk.info/software/the-
silver-searcher-for-windows.html)

あるいは、最新版ではないのですが非公式に`Windows`向けexeを公開している方がいます。（この方の作った他のツールにもお世話になっていますが、exeの利用はあくまで自己責任で)

上記サイトのexeをパスの通っているところへ配置してください。

### pt (The Pratinum Searcher)

`ag`を参考に`go`で作られた`pt`というものもあります。

[Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。 -
Thinking-megane](http://blog.monochromegane.com/blog/2014/01/16/the-platinum-
searcher/)

これの良いところは`go`で書かれているので色々なOS向けのバイナリが用意しやすいところで、実際に上記URLから`Windows`向けバイナリを取得可能です。（手元で`Linux`バイナリを試してみたところエラーがでてしまいましたが、環境依存かもしれません)

* * *

それぞれ`github`上にソースコードが公開されており、手動でもビルドも可能です。が、今回はそこまでは踏み込み過ぎな気がするので割愛します。


CC BY-SA 3.0
2015-01-26T17:02:21.567
5369
2015-01-26T17:07:50.857
2015-01-26T17:07:50.857
3313
3313
5324
answer


WindowsのPowerShellの場合、`Select-
String`コマンドで文字列パターンの検索結果をファイル名、行数、その行の内容(文字列)として表示できます。

大量に見つかると思いますので、下記の様に`> result.txt`を付けてtxtファイル等に出力したほうが良いと思います。

[code]

     Get-ChildItem -Recurse -Include "*js", "*.htm", "*.html", "*.php" | Select-String -Pattern "\$\(" > result.txt
    
[/code]

**Get-ChildItem**

対象のファイル一覧を取得します。

`-Recurse`:サブディレクトリも含め、再帰的にファイルを探します。  
`-Include`:Path要素のパターン。

**Select-String**

`-Pattern`:探す文字のパターンで、正規表現が使用できます。

**Select-Object**

使用されている位置(ファイルと行数)だけ知りたい場合は、`Select-Object Path,
LineNumber`でパスと行数のみを出力することができます。

[code]

     Get-ChildItem -Recurse -Include "*js", "*.htm", "*.html", "*.php" | Select-String -Pattern "\$\(" | Select-Object Path, LineNumber > result.txt
    
[/code]


CC BY-SA 3.0
2015-01-26T18:47:08.083
5372
2015-01-27T06:54:08.443
2015-01-27T06:54:08.443
3068
3068
5324
answer


Windowsのコマンドプロンプトには標準で[`findstr`というコマンド](https://technet.microsoft.com/ja-
jp/library/cc732459.aspx)があります。だいぶ機能は落ちますが、これがgrepに相当します。  
`findstr \$\\( *.php *.html *.js`で、ディレクトリ内すべてのphpとhtmlとjsファイルを検索できます。  
サブディレクトリ内も全て再帰的に検索するなら`/s`オプションを使って`findstr /s \$\\( *.php *.html *.js`とします。  
`/n`オプションで行番号をつけて`findstr /n /s \$\\( *.php *.html *.js`とするとその後の参照に便利です。

GUI派の方なら、プログラマ向けのテキストエディタやIDEはほとんどがファイルの横断検索する機能を備えているので、それを使うほうがいいと思います。ironsandさんの挙げている[xyzzy](http://xyzzy-022.github.io/)もその一つです。  
個人的には[Mery](http://www.haijin-
boys.com/wiki/)がおすすめです。`[検索]→[ファイルから検索...]`で一覧が出て、[タグジャンプマクロ](http://www.haijin-
boys.com/wiki/%E3%82%BF%E3%82%B0%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97)で検索結果から該当行にジャンプできます。


CC BY-SA 3.0
2015-01-26T23:01:38.940
5376
2015-01-26T23:13:42.550
2015-01-26T23:13:42.550
5910
5910
5324
answer


ツールで探す方法を挙げてる方が多いですが、JavaScript的に解決する例でも。  
jQuery読み込み後に$のプロキシを作り、エラーオブジェクトのスタックトレースの表示を仕込みます。

[code]

    window.$ = function(){
      var e = new Error();
      console.log(e.stack);
      jQuery.apply(jQuery, arguments);
    }
    
[/code]

これで`$('...')`は列挙できます。インスタンスを再利用する場合はこの限りではありませんが、それは他のツールを使う場合も同様です。


CC BY-SA 3.0
2015-01-29T11:54:08.847
5572
2015-01-29T11:54:08.847
2674
5324
answer