Shorarqubeによるコード静的解析


この記事では、コードの解析ツールを簡単に紹介します.
我々は、これらの質問に答えるためにしようとします:なぜsonarqube?インストール方法?
  • この記事のスペイン語版:Link

  • 導入


    Sonarqubeは、多くの同様のツールのように、我々は静的なコード解析を実行することができます、これは改善のためのポイントを検出するために私たちを案内します.

    なぜsonarqubeを使用しますか?


    それは私たちが良いことをしていることを確認するのに役立ちます.
    主な用途の中で、以下のような側面を識別する可能性を強調することができます.
  • 重複コード
  • デッドコード
  • コーディング標準
  • 不要なコメント
  • ユニットテストと統合テストの欠如
  • ファイルサイズと方法
  • スパゲッティコード
  • 脆弱性
  • どのような情報sonarqubeを見ることができますか?


  • 品質ゲート:分析されたプロジェクトは、ステージを通過するに準拠しなければならないルール.

  • バグと脆弱性:実際のまたは潜在的な失敗に言及します.

  • コード臭い:それはあなたのコードの書き込みを支援する表示です.それはあなたがエラーを持っていることを意味しない、それは単なるエラーのリスクを減らすための提案です.

  • カバレッジ:それは私たちはどのくらいのコードがテストされ、テストによって検証を知ることができます.
  • どのようにインストールし、それを使用するには?


    それをインストールし、開発者の日にそれを統合する手順を見てみましょう.

    必要条件:

  • Docker
  • セットアップと実行sonarqube


    1 )ターミナルからsonarqubeをインストールします.docker pull sonarqube2 ) sonarqubeコンテナを実行するには、次の2つの方法があります.
  • 次のコマンドを使用する
  •  docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000  sonarqube:latest
    
    あなたが特定のバージョンに最新の変更の代わりにもう一つのバージョンをダウンロードするならば.
    重要:後で使用する名前を覚えておいてください.
  • 次の画像に示すように、2番目の方法はDockerアプリを使用しています
    重要:後で使用するための名前を覚えて

  • 3 ) localhost : 9000に入力して、すべてがうまく動作していることを確認します.次のイメージのようなセクションが表示されます.ユーザー名とパスワードは管理者です.

    4 )プラグインをインストールし、フラッタの解析をサポートすることができます.
  • セクションからダウンロードreleases ファイルの最後のバージョン.ジャー
  • ダウンロードしたファイルを端末でコピーし、Dockerコンテナに貼り付けるつもりです.

  • Dockerアプリケーションから、CLIを実行し、次の画像に示すようにDockerコンテナから「id Docker」を取り出します.


  • その後、コピーします.DockerコンテナへのJARファイル
  • docker cp file_path.jar id-docker:/opt/name/extensions/pluginsパス.JAR :ファイルをダウンロードするパス.ジャー
    ID Docker :前のステップで得たコンテナのID
    名前:コンテナ名.変更を加えることなくチュートリアルに従うならば、それはsonarqubeです
  • CLIコンソールをチェックしてください.正しいファイルのjarファイル
  • Dockerコンテナを再起動する
  • 5 )ダウンロードSonarScanner
  • ダウンロード.あなたのOSのためのZIPファイルとあなたのOS
  • 私のMacで.
  • ツールと呼ばれるフォルダのダウンロードと解凍
  • 次に、bash/zshの設定は次のようになります.export PATH="$PATH":"$HOME/tools/sonar-scanner/bin"
  • 6 ) localhostに戻りましょう: 9000
    7 )その後、プロジェクトを作成し、オプションを手動で選択します
    8 )キーと名前を入力します.
    9 )プロジェクトのトークンを入力する
    10 ) Aを作成するconfiguration あなたのフラッタープロジェクトと呼ばれるファイル:SONARプロジェクト.プロパティ
     # Project identification
     sonar.projectKey=flutter_rocks
     sonar.projectName=Flutter Rocks
     sonar.projectVersion=1.0
    
     # Source code location.
     # Path is relative to the sonar-project.properties file. Defaults to .
     # Use commas to specify more than one folder.
     sonar.sources=lib
     sonar.tests=test
    
     # Encoding of the source code. Default is default system encoding.
     sonar.sourceEncoding=UTF-8
    
     # Allows reuse of an existing analyzer report
     # sonar.dart.analysis.reportPath=
    
     # Analyzer mode
     # Can be:
     # - flutter (flutter analyze) - default
     # - dart (dart analyze)
     # - legacy (dartanalyzer)
     # sonar.flutter.analyzer.mode= 
    
    独自のリンターアナライザを使用する場合は、次のようにします.
     sonar.dart.analysis.useExistingOptions=true
    
    解析オプション.YAMLファイルは既にプロジェクトルートの下に存在します
    11 )プロジェクトのルートでsonarqube consoleによって示されているOSのコマンドを実行する

     sonar-scanner \
     -Dsonar.projectKey=NAME \
     -Dsonar.sources=. \
     -Dsonar.host.url=http://localhost:9000 \
     -Dsonar.login=AuthenticationToken -X;  
    
    12 )結果:すべての出力を見るためにダッシュボードをリロードすることができます


    Flutterがテストフォルダー内のファイルをインデックス化するときにエラーが発生した場合は、次のことができますsolution
    sonar.test.inclusions=**/*test*/**
    sonar.exclusions=**/*test*/**
    
    ビルド2ランナークラスを除外する場合は、前のソリューションを使用できます.
    sonar.exclusions=**/*.g.dart,**/*.gr.dart,**/*.freezed.dart
    

    結論


    Sonarqubeは、コードの品質を評価し、品質の飛躍を取る必要があるチームを持っているプロジェクトのための同盟国になることができます.それはあなたがチームが顧客の期待に追いつくことができるように“ルール”を作成することができます.それはまだフラッタのために非常に粗いです、そして、私は以下のライブラリのうちの1つが十分であるかもしれないと思います.
    静的コード解析では、ほとんどの場合、これらのライブラリを使うのに十分であると思います.Lint , VeryGoodAnalysis , Pedantic
    Sonarqubeを実行しインストールする手順は簡単です.私が成し遂げたかったことは、ちょうど始まっているより詳細なステップバイステップを必要とする人々のためにできるだけ詳細であることでした.
    ここに来てくれてありがとう.
    他の開発者がフラッタでアプリケーションを書くとき、彼らの生産性を改善し続けるのを助けるために、あなたはこの記事を共有することができます.
    この記事のスペイン語版がありますhashnode . ご自由に.🇪🇸
    今後のフラッタ記事でお会いしましょう!

    参考文献

  • https://docs.sonarqube.org/latest/setup/get-started-2-minutes/

  • https://hub.docker.com/_/sonarqube .
  • https://docs.docker.com/engine/reference/commandline/cp/
  • https://stackoverflow.com/questions/29837369/cant-be-indexed-twice-testsourcedirectory-and-sourcedirectory-are-same/40150551#40150551
  • https://github.com/insideapp-oss/sonar-flutter