C++コードスタイルチェック

12660 ワード

  • バックグラウンド
  • C++はGoogleの大部分のオープンソースプロジェクトの主なプログラミング言語である.各C++プログラマーが知っているように、C++には多くの強力な特性があるが、このような強力さは複雑になり、コードがバグを生みやすくなり、読み取りとメンテナンスが困難になることは避けられない.
    コードの一貫性を強化し、統一的なプログラミングスタイルを維持し、どのプログラマーもあなたのコードを迅速に読み取ることができるようにするために、GoogleはC++コードスタイルチェックツール(cpplint)を開発しましたが、このツールはチェック結果をコンソールに出力するだけで、読みにくく、コードとよく結合して展示することはできません.htmlページのチェックレポートがなく、jenkinsの統合展示にも不利で、このような強力な需要の下で、Cppstyleというツールが誕生しました.Cppstyleは既存のツールのコンソール出力を行い、煩雑な検査結果文字列からキー情報を提出し、コードファイルと結びつけてhtmlページを出力した.簡潔なページで、コードスタイルの修正をより便利に行うことができます.
      2.ツールの紹介
    このツールはGoogleの既存のツールに基づいて、次のような改善を行いました.
        1. 1つのディレクトリの下にあるすべてのソースファイルのコードチェックをサポートし、1つのソースファイルのコードチェックをサポートします.
        2. チェックルールのカスタマイズをサポートし、現在のディレクトリの下にあるfilterを使用できます.sdpファイルにチェックルールを指定し、チェックルールを設定することで、チェックする必要のないルールをフィルタリングし、ルールをカンマで区切ることができます
        3. htmlページの表示をサポート
      3. 使用方法
        python Gaara.py -s sourcefile > result.html
    チェックルールフィルタ:現在のディレクトリの下にfilter.sdp設定、カンマで区切る
        example:
         -whitespace,+whitespace/braces
    フィルタリングルールはwhitespaceになりますが、ルールwhitespace/bracesは保持され、ルールのデフォルト保持は指定されていません.現在、Googleオリジナルツールでサポートされているルールは次のとおりです.
       
    'build/class',
      'build/deprecated',
      'build/endif_comment',
      'build/explicit_make_pair',
      'build/forward_decl',
      'build/header_guard',
      'build/include',
      'build/include_alpha',
      'build/include_order',
      'build/include_what_you_use',
      'build/namespaces',
      'build/printf_format',
      'build/storage_class',
      'legal/copyright',
      'readability/alt_tokens',
      'readability/braces',
      'readability/casting',
      'readability/check',
      'readability/constructors',
      'readability/fn_size',
      'readability/function',
      'readability/multiline_comment',
      'readability/multiline_string',
      'readability/namespace',
      'readability/nolint',
      'readability/streams',
      'readability/todo',
      'readability/utf8',
      'runtime/arrays',
      'runtime/casting',
      'runtime/explicit',
      'runtime/int',
      'runtime/init',
      'runtime/invalid_increment',
      'runtime/member_string_references',
      'runtime/memset',
      'runtime/operator',
      'runtime/printf',
      'runtime/printf_format',
      'runtime/references',
      'runtime/rtti',
      'runtime/sizeof',
      'runtime/string',
      'runtime/threadsafe_fn',
      'whitespace/blank_line',
      'whitespace/braces',
      'whitespace/comma',
      'whitespace/comments',
      'whitespace/empty_loop_body',
      'whitespace/end_of_line',
      'whitespace/ending_newline',
      'whitespace/forcolon',
      'whitespace/indent',
      'whitespace/labels',
      'whitespace/line_length',
      'whitespace/newline',
      'whitespace/operators',
      'whitespace/parens',
      'whitespace/semicolon',
      'whitespace/tab',
      'whitespace/todo'

     
      4. イノベーションポイント
        1. htmlページの展示、开発者を助けて、复雑な検査结果の中から解放して、更にRDが自分のコードを修正するのに便利です
        2. 検査ルールをカスタマイズでき、開発者が検査を必要としないルールをフィルタリングしやすい
        2. 持続的な統合jenkinsと融合することができ、現在RDが使用されている.QAはRDのコードスタイルをチェックします.