sedを使用して関数コメントを抽出するには?

sedを使用して関数コメントを抽出するには?

Cソースファイルと関数名、構造、列挙型、またはその他の名前を取得して要素がある場合は、要素のすぐ上にコメントを出力する簡単なユーティリティを実装したいと思います。

つまり。

/* This is a doc comment
 * I want this comment extracted
 */
void function_foo(){

}

使用法:

utility file.c function_foo

出力:

This is a doc comment 
I want this comment extracted

これのユースケースは、ソースファイルの機能ドキュメントを処理するためにemacsでorg-babelを使用したいということです。たぶんこれを行うことができるdoxygenツールやclangツールがありますか?まだ見つからなかっただけです。最終結果は、他のコンテンツを含む文書構成ファイルのコードから直接取得した最新の文書を簡単に維持できることです。

ベストアンサー1

努力する:

utility() {
  FUNC=$2 perl -l -0777 -ne '
    if (
      m{
        ^ /\* \s* ((?s:(?!\*/).)*?) \s* \*/ \s* \n
        (?:\w.*\h)? \Q$ENV{FUNC}\E \h* \(
      }mx
    ) {
      $comment = $1;
      $comment =~ s/^\s*\*\s*//gm;
      print $comment
    }' < "$1"
}

関数呼び出しの偽の肯定を避けるために、コメントと関数定義が行の先頭(先行スペースなし)にあるとします。

今、車輪を再発明する前に、次のことを検討することをお勧めします。doxygenこれはコードベースの文書化のためのフレームワークを提供します。

おすすめ記事