コードライン統計の設計と実現


この間面接に行って、相手は総合的なテスト問題を出して、コード統計ツールを完成して、分かち合って、他の人が似たような需要があるかどうかを見ました.
大体の需要は以下の通りです.
プログラムを設計します:マルチスレッドを使用して、プロジェクトプログラムのソースコードの行数を統計します;ソースコードはコンパイル可能な合法的なコードであり、その物理総行数、その中の空の行数、有効なコードを含む行数、注釈内容を含む行数を統計する.(正規表現を使用しないでコマンドラインプログラムを作成することをお勧めします.独立して問題に答えることを要求します.コードフレームワークが複数の言語をサポートするソースコードの行数統計に拡張されれば、より高い評価が得られます.)
皆さん、このテーマを見たとき、あなたはどのように分析して、どのようにあなたの実現を設計しますか?
コードの行の統計の核心部分を分析します.
C#を例にとると、1つのコードファイルでは、空の行、コメント行、コメントブロック、およびブレンドなどがあります.
 public static void TestFunc()
        {

            //          ,        
            int nFlag = 0;
            //              
            string strTest = "       ,         //      ,/*      */";
            /*          
                          
             "      "
             //      
             */
            strTest = string.Format("{0}{1}", /*   */"   ", /* //       */nFlag); //               
        }

ここで実装において考慮すべき詳細は主に以下の点である.
1.C#には、行注釈とブロック注釈が存在し、行注釈は//で始まり、本行のみ有効である.ブロックコメントは/*で始まり、*/で終わり、行をまたぐことができます.
2.ブロックアノテーションは行にまたがることができ、アノテーションブロック内の文字列と行アノテーションは無効です.
3.文字列は行をまたぐこともでき、文字列内のブロックコメントと行コメントは無効です.
4.行アノテーション内の文字列とアノテーションブロックは無効です
5.1行のコードに複数の間欠的なブロック注釈と行注釈がある場合、同時に有効な行と注釈行として記録し、ここでは1行しか計算できない
また,他のコードの多重化や拡張,マルチスレッドの同期などは,この文書では議論しないが,具体的にはコードを見よう.
http://download.csdn.net/detail/tragicguy/8867449
暇な友达と一绪に讨论することを歓迎して、兴味のある友达も下に降りて见て、点数をつけることを手伝って、どんな不足なところ、意见を出すことを手伝ってください.