DOnations]プログラム。前書き_コード品質_は、特定のコードがどれほど有用で保守可能であるかの近似値です。品質の高いコードは、アプリケーションの保守と拡張のタスクを簡単にします。これにより、将来必要な変更を加えたときに発生するバグが少なくなります。SonarQubeは、コード品質の分析とレポート作成を支援するオープンソースのツールです。ソースコードをスキャンして潜在的なバグ、脆弱性、保守性の問題を探し、レポートに結果を表示します。これにより、アプリケーションの潜在的な問題を特定できます。SonarQubeツールは2つのサブアプリケーションで構成されます。開発者のマシンにローカルにインストールされる分析エンジンと、記録保持とレポート作成のための集中サーバーです。1つのSonarQubeサーバーインスタンスで複数のスキャナーをサポートできるため、多くの開発者からのコード品質レポートを1か所で集中管理できます。このガイドでは、SonarQubeサーバーとスキャナーを展開して、コードを分析し、コード品質レポートを作成します。次に、SonarQubeツールでスキャンして、マシンでテストを実行します。前提条件このガイドを始める前に、次のものが必要です。16.04初期サーバー設定チュートリアル]、sudoの非rootユーザーとファイアウォールを含みます。JDKセクションに従って構成されます。JDKインストールチュートリアル]。[このLEMPインストールガイド]。16.04でNginxサーバーブロックで暗号化を設定する方法]。SonarQubeをインストールするサーバーを指す完全修飾ドメイン名とAレコード。[このDNSレコード設定ガイド]を使用して設定できます。手順1-インストールの準備SonarQubeをインストールする前に、いくつかの手順を実行する必要があります。*ユーザーとしてサービスを実行することは確かに理想的ではないため、SonarQubeサービスを実行するための別のシステムユーザーを作成します。次に、インストールディレクトリを作成して権限を設定し、SonarQubeのMySQLデータベースとユーザーを作成します。*ユーザーを作成します。--disabled-loginこのユーザーはSonarQubeサービスの実行にのみ使用するため、サーバーに直接ログインできないシステムユーザーを作成します。次に、SonarQubeファイルを保持するディレクトリを作成します。*ユーザーがこのディレクトリのファイルを読み書きできるようにします。+`ユーティリティをインストールし、配布ファイルを抽出できるようにします。unzip次に、SonarQubeが使用するデータベースと資格情報を作成する必要があります。*ユーザーとしてMySQLサーバーにログインします。-p次に、SonarQubeデータベースを作成します。sonarqube;EXIT;次に、SonarQubeがデータベースへのアクセスに使用する資格情報を作成します。protected]'localhost';次に、新しく作成されたユーザーがSonarQubeデータベースに変更を加えることができるように、アクセス許可を付与します。protected]'localhost';次に、パーミッションの変更を適用して、MySQLコンソールを終了します。PRIVILEGES;EXIT;ユーザーとディレクトリが用意できたので、SonarQube自体をダウンロードしてインストールします。ステップ2-SonarQubeのダウンロードとインストール現在の作業ディレクトリをSonarQubeインストールディレクトリに変更することから始めます。7.0のダウンロードリンクを取得します。リンクを取得したら、ファイルをダウンロードします。wget次に、ファイルを解凍します。unzipファイルが解凍されたら、ダウンロードしたzipファイルが不要になったため削除します。rmすべてのファイルが配置されたので、SonarQubeを構成します。ステップ3-SonarQubeサーバーの構成SonarQube構成ファイルでいくつかを編集する必要があります。:SonarQubeサーバーがデータベース接続に使用するユーザー名とパスワードを指定する必要があります。SonarQubeにバックエンドデータベースにMySQLを使用するように指示する必要もあります。SonarQubeにサーバーモードで実行するように指示すると、パフォーマンスが向上します。リバースプロキシを使用するため、SonarQubeにローカルネットワークアドレスのみでリッスンするように指示します。SonarQube構成ファイルを開くことから始めます。/conf/sonar.propertiesまず、SonarQubeがデータベースへのアクセスに使用するユーザー名とパスワードを、MySQL用に作成したユーザー名とパスワードに変更します。...次に、MySQLをデータベースドライバーとして使用するようSonarQubeに指示します。...最後に、サーバーモードで実行し、ローカルアドレスのみをリッスンするようSonarQubeに指示します。sonar.web.javaAdditionalOpts=これらのフィールドが更新されたら、ファイルを保存して閉じます。次に、SonarQubeサーバーをサービスとして実行するように設定し、サーバーの再起動時に自動的に起動するようにします。サービスファイルを作成します。/etc/systemd/system/sonarqube.serviceSonarQubeサービスを開始および停止する方法を指定する次のコンテンツをファイルに追加します。[Systemdユニットとユニットファイルについて]を参照してください。ファイルを閉じて保存し、SonarQubeサービスを開始します。startSonarQubeサービスのステータスをチェックして、サービスが開始され、期待どおりに実行されていることを確認します。statusサービスが正常に開始されると、次のような「アクティブ」という行が表示されます。days次に、ブート時にSonarQubeサービスが自動的に開始するように構成します。sonarqube他のほとんどのJavaアプリケーションと同様に、SonarQubeは初期化に時間がかかります。初期化プロセスが完了すると、次のステップに進むことができます。手順4-リバースプロキシの構成SonarQubeサーバーを実行したので、SoginQubeインスタンスのリバースプロキシおよびHTTPSターミネーターであるNginxを構成します。サイトの新しいNginx構成ファイルを作成することから始めます。/etc/nginx/sites-enabled/sonarqubeNginxが受信トラフィックをSonarQubeにルーティングできるように、この構成を追加します。}}ファイルを保存して閉じます。次に、構成ファイルに構文エラーがないことを確認します。+`を再度実行します。エラーがなければ、Nginxを再起動します。+`にアクセスできます。Webインターフェースが表示されます。Encryptを使用してインストール用のHTTPS証明書を作成し、サーバーとローカルマシン間でデータが安全に転送されるようにします。+`を使用して、Nginxの証明書を作成します。Encrypt証明書を初めて要求する場合、CertbotはメールアドレスとEULA契約を求めます。電子メールを入力し、EULAに同意します。その後、Certbotはセキュリティ設定の構成方法を尋ねます。すべてのリクエストをHTTPSにリダイレクトするオプションを選択して、サーバーに送信されるリクエストが暗号化されるようにします。リバースプロキシの設定が完了したので、SonarQubeサーバーのセキュリティ保護に進みます。このデフォルトのパスワードは安全ではないため、適切なセキュリティ対策として、より安全なパスワードに更新する必要があります。インストールのURLにアクセスして開始し、デフォルトの資格情報を使用してログインします。ログインしたら、[管理]タブをクリックし、ドロップダウンリストから[セキュリティ]を選択して、[ユーザー]を選択します。[SonarQubeユーザー管理タブ]ここから、「管理者」アカウント行の右側にある小さな歯車をクリックし、「パスワードの変更」をクリックします。パスワードは覚えやすいが推測しにくいものに変更してください。次に、プロジェクトを作成し、同じページからサーバーに分析結果を送信するために使用できる通常のユーザーを作成します。ページの右上にある[ユーザーの作成]ボタンをクリックします。次に、「トークン」列のボタンをクリックして、このトークンに名前を付けて、特定のユーザーのトークンを作成します。後でコードスキャナーを呼び出すときにこのトークンが必要になるため、必ず安全な場所に書き留めてください。最後に、SonarQubeインスタンスは世界に広く開かれており、誰でも分析結果とソースコードを表示できることに気付くかもしれません。+この設定は非常に安全ではないため、ログインユーザーのみがダッシュボードにアクセスできるようにSonarQubeを構成します。同じ管理タブから、*構成*をクリックしてから、左ペインの*セキュリティ*をクリックします。このページのスイッチを切り替えて、ユーザー認証を要求します。Force認証スイッチ]サーバーのセットアップが完了したので、スキャナーをセットアップしましょう。ステップ6-コードスキャナーのセットアップSonarQubeのコードスキャナーは、ローカル開発ワークステーションや継続的配信サーバーなど、SonarQubeサーバーを実行しているマシンとは異なるマシンにインストールできる個別のパッケージです。Webサイトで見つけることができるWindows、MacOS、およびLinux用のパッケージがあります。このチュートリアルでは、SonarQubeサーバーをホストするサーバーにコードスキャナーをインストールします。スキャナーのディレクトリを作成し、新しいディレクトリに変更することから始めます。+`を使用してLinux用のSonarQubeスキャナーをダウンロードします。https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli--linux.zipスキャナーを抽出し、zipアーカイブファイルを削除します。3.0.3.778その後、スキャナーをサーバーのインストールで動作させるために、いくつかの設定を変更する必要があります。編集のために構成ファイルを開きます。3.0.3.778/conf/sonar-scanner.propertiesまず、スキャナーにコード分析結果の送信先を指示します。sonar.host.url`で始まる行のコメントを解除し、SonarQubeサーバーのURLに設定します。sonar.host.url=ファイルを保存して閉じます。/bin/sonar-scanner次に、パスを指定せずにスキャナーを呼び出すことができるように、シンボリックリンクを作成します。/usr/local/bin/sonar-scannerスキャナーがセットアップされたので、最初のコードスキャンを実行する準備が整いました。[SonarQubeサンプルプロジェクト]でテストスキャンを実行することを検討してください。これらは、SonarQubeチームが作成したサンプルプロジェクトで、SonarQubeが検出して報告する多くの問題が含まれています。ホームディレクトリに新しい作業ディレクトリを作成し、ディレクトリに移動します。sonar-testサンプルプロジェクトをダウンロードします。https://github.com/SonarSource/sonar-scanning-examples/archive/master.zipプロジェクトを解凍し、アーカイブファイルを削除します。master.zip次に、サンプルプロジェクトディレクトリに切り替えます。sonar-scanning-examples-master/sonarqube-scanner前に作成したトークンを渡して、スキャナーを実行します。sonar.login=スキャンが完了すると、コンソールに次のようなものが表示されます。------------------------------------------------------------------------サンプルプロジェクトのレポートは、SonarQubeダッシュボードに次のように表示されます。Dashboard]SonarQubeサーバーとスキャナーの両方が期待どおりに動作することを確認したので、SonarQubeを使用して独自のコードを分析できます。プロジェクトをサーバーに転送するか、手順6の手順に従って、ワークステーションにSonarQubeスキャナーをインストールおよび構成し、SonarQubeサーバーを指すように構成します。次に、プロジェクトのルートディレクトリでSonarQube構成ファイルを作成します。sonar-project.propertiesこのファイルを使用して、SonarQubeにプロジェクトに関するいくつかのことを伝えます。key_を定義します。好きなものを使用できますが、このIDはSonarQubeインスタンスに対して一意である必要があります。...次に、SonarQubeがこの情報をダッシュ​​ボードに表示できるように、プロジェクト名とバージョンを指定します。...最後に、コードファイル自体を検索する場所をSonarQubeに伝えます。これは、構成ファイルが存在するディレクトリに関連していることに注意してください。現在のディレクトリに設定します。sonar.sources=ファイルを閉じて保存します。独自のコードでコード品質分析を実行する準備が整いました。+`を再度実行します。sonar.login=スキャンが完了すると、次のような概要画面が表示されます。------------------------------------------------------------------------そして、プロジェクトのコード品質レポートがSonarQubeダッシュボードに表示されます。結論このチュートリアルでは、コード品質分析のためにSonarQubeサーバーとスキャナーをセットアップしました。documentation]を読んで、ローカル開発マシンで、またはその一部として分析を実行する方法を学ぶことができます。