Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@function tag seems to cause an uncaught error #14

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

@function tag seems to cause an uncaught error #14

kt3k opened this issue Jun 23, 2015 · 5 comments

Comments

@kt3k
Copy link

@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
Copy link
Member

@h13i32maru h13i32maru commented Jun 28, 2015

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

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

@kt3k
Copy link
Author

@kt3k 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
Copy link
Member

@h13i32maru h13i32maru commented Jun 30, 2015

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

@h13i32maru
Copy link
Member

@h13i32maru h13i32maru commented Jun 30, 2015

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

@kt3k
Copy link
Author

@kt3k kt3k commented Jun 30, 2015

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants