@function tag seems to cause an uncaught error #14

Closed
kt3k opened this Issue Jun 23, 2015 · 5 comments

Comments

Projects
None yet
2 participants
@kt3k

kt3k commented Jun 23, 2015

esdoc 0.1.2
node 0.10.38

$ cat esdoc.json 
{
  "source": "src",
  "destination": "doc"
}
$ tree src/
src/
└── test.js

0 directories, 1 file
$ cat src/test.js 

class A {
  /**
   * @function
   */
  a(){}
}
$ esdoc -c esdoc.json 

~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/ESDoc.js:378
            throw _iteratorError5;
                  ^
TypeError: Cannot read property 'name' of undefined
    at FunctionDoc.name (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Doc/FunctionDoc.js:59:39)
    at FunctionDoc._apply (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Doc/AbstractDoc.js:68:20)
    at FunctionDoc.AbstractDoc (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Doc/AbstractDoc.js:54:10)
    at new FunctionDoc (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Doc/FunctionDoc.js:34:20)
    at DocFactory._createDoc (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Factory/DocFactory.js:388:14)
    at DocFactory._traverseComments (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Factory/DocFactory.js:318:24)
    at DocFactory.push (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Factory/DocFactory.js:206:26)
    at Controller.<anonymous> (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/ESDoc.js:411:17)
    at Controller.enter (~/.nvm/v0.10.38/lib/node_modules/esdoc/out/src/Util/ASTUtil.js:42:20)
    at Controller.__execute (~/.nvm/v0.10.38/lib/node_modules/esdoc/node_modules/estraverse/estraverse.js:397:31)

上の設定でエラーになってしまい document が生成できないようでした。
@function タグが基本的にうまく処理できていないように見えました。

@h13i32maru

This comment has been minimized.

Show comment
Hide comment
@h13i32maru

h13i32maru Jun 28, 2015

Member

@kt3k この場合、@functionの記述は不要です。ESDocでは@function@class@methodといったタグは記述不要なように実装しています。

もしくは@functionタグを使用する何か特別な理由があれば教えていただけると助かります。

Member

h13i32maru commented Jun 28, 2015

@kt3k この場合、@functionの記述は不要です。ESDocでは@function@class@methodといったタグは記述不要なように実装しています。

もしくは@functionタグを使用する何か特別な理由があれば教えていただけると助かります。

@kt3k

This comment has been minimized.

Show comment
Hide comment
@kt3k

kt3k Jun 29, 2015

@function が使いたいということではなくて、@function があるとクラッシュしてしまうのが不便かなぁということが言いたかったです。(それか、せめて、何が原因でクラッシュしたかをレポートできるようにするとか・・・)
自分の例でいうと、複数人で開発しているレポジトリを esdoc で document 出してみようと思ったら、誰かが encoding というファイルをソースツリーの中にポンと置いていて、その中で @function があったために、ドキュメントが作成されないということがあったのですが、どこの何が問題ということがエラーからはわからず、原因になっているファイルを自分で探す必要があったのが不便でした。

ESDocでは@function@class@methodといったタグは記述不要なように実装しています。

この方針は自分は良いと思います。なので、普通にその辺のタグは無視される挙動が良いのかなという気がします。

ちなみに上のスタックトレースをちょっと追ってみたところ、下の箇所で、this._node.id.name にアクセスして、id が undefined なので TypeError というのが、根本的な問題のようでした。(なんで @function を書くとここに来るのかまでは追えませんでした。)
https://github.com/h13i32maru/esdoc/blob/74bc61265c19ae5ddc27773dae2902cce38fdd61/src/Doc/FunctionDoc.js#L19

kt3k commented Jun 29, 2015

@function が使いたいということではなくて、@function があるとクラッシュしてしまうのが不便かなぁということが言いたかったです。(それか、せめて、何が原因でクラッシュしたかをレポートできるようにするとか・・・)
自分の例でいうと、複数人で開発しているレポジトリを esdoc で document 出してみようと思ったら、誰かが encoding というファイルをソースツリーの中にポンと置いていて、その中で @function があったために、ドキュメントが作成されないということがあったのですが、どこの何が問題ということがエラーからはわからず、原因になっているファイルを自分で探す必要があったのが不便でした。

ESDocでは@function@class@methodといったタグは記述不要なように実装しています。

この方針は自分は良いと思います。なので、普通にその辺のタグは無視される挙動が良いのかなという気がします。

ちなみに上のスタックトレースをちょっと追ってみたところ、下の箇所で、this._node.id.name にアクセスして、id が undefined なので TypeError というのが、根本的な問題のようでした。(なんで @function を書くとここに来るのかまでは追えませんでした。)
https://github.com/h13i32maru/esdoc/blob/74bc61265c19ae5ddc27773dae2902cce38fdd61/src/Doc/FunctionDoc.js#L19

@h13i32maru

This comment has been minimized.

Show comment
Hide comment
@h13i32maru

h13i32maru Jun 30, 2015

Member

なるほど、そういうことだったんですね!
確かに現状はESDocが吐くエラーログはあまり役に立たないので、もう少し原因を追いかけやすいログを出力できないか検討してみます。ずばりどのタグが原因かを出力するのは難しそうなので、ファイル名、パース中のコード位置あたりを出せないかやってみます。

Member

h13i32maru commented Jun 30, 2015

なるほど、そういうことだったんですね!
確かに現状はESDocが吐くエラーログはあまり役に立たないので、もう少し原因を追いかけやすいログを出力できないか検討してみます。ずばりどのタグが原因かを出力するのは難しそうなので、ファイル名、パース中のコード位置あたりを出せないかやってみます。

@h13i32maru

This comment has been minimized.

Show comment
Hide comment
@h13i32maru

h13i32maru Jun 30, 2015

Member

こんな感じでログを表示するようにしました。
2015-06-30 22 06 46

Member

h13i32maru commented Jun 30, 2015

こんな感じでログを表示するようにしました。
2015-06-30 22 06 46

@kt3k

This comment has been minimized.

Show comment
Hide comment
@kt3k

kt3k Jun 30, 2015

おお、いい感じですね!ありがとうございます! 😸 🎉

kt3k commented Jun 30, 2015

おお、いい感じですね!ありがとうございます! 😸 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment