Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@raviqqe

Go言語でMarkdown・HTMLのリンクを爆速チェックするコマンド書いた

More than 3 years have passed since last update.

動機

ReadmeとかドキュメンテーションとかよくMarkdownで書くと思いますが、リンクが切れてないか手作業で点検するのがだるいので自動チェックするコマンド書きました。爆速です(当社比)。

名前はliche

こんな感じで動きます

asciicast

機能

<a/>href<img/>src属性に指定されているURLに対してHTTPリクエストを送りチェックします。相対パスや絶対パスもチェックできますが、絶対パスをチェックするときはドキュメントルートディレクトリの指定が必要です。

他の機能としては、

  • 再帰的にディレクトリを廻ってMarkdown・HTMLファイルを探す
  • HTTPリクエストの並列度を調整する
  • HTTPリクエストのタイムアウトを設定する
  • チェックが成功したリンクも表示する

などです。

> liche --help
Link checker for Markdown and HTML

Usage:
    liche [-c <num-requests>] [-d <directory>] [-r] [-t <timeout>] [-v] <filenames>...

Options:
    -c, --concurrency <num-requests>  Set max number of concurrent HTTP requests. [default: 512]
    -d, --document-root <directory>  Set document root directory for absolute paths.
    -r, --recursive  Search Markdown and HTML files recursively
    -t, --timeout <timeout>  Set timeout for HTTP requests in seconds. Disabled by default.
    -v, --verbose  Be verbose.

実装

  • Markdown・HTMLファイルを探す処理
  • ファイル内のURLをチェックし結果をまとめる処理
  • URLをチェックする処理

の3つの処理をgoroutineで並列に回し、channelでつなげています。これによって上のターミナルキャプチャのようにチェックが終わったファイルの結果がどんどん表示されていきます。

まとめ

Markdown・HTMLファイル内のリンクを爆速チェックするコマンドlicheを書きました。CIとかで走らせるのが手間もかからずよいと思います。

また、ulimit -nでリミット解除し、--concurrencyをギリギリまで上げるとパソコンをいじめられます。ぜひお試しください。

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
raviqqe

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?