SonarQube 7.1 上に、
結果を
[TOC]
Node.js に 依存しない FrontEnd Lint 環境を 構築したい 背景
Node.js に
Node.js を
使った Plugin も あるが、 最新版では 動かなさそう
SonarQube には、FrontEnd Lint を 実行する ための plugin が 存在します。
groupe-sii/sonar-web-frontend-plugin: Sonar plugin to add metrics for web technologies (JS, CSS, HTML, SASS, AngularJS…)
上記は、非常に 良い 感じなのですが、 長い 期間メンテナンスされている 雰囲気が ありません。 エンタープライズで
使用している 場合、 ソフトウェアの インストールが 難しい 場合が ある
アプリケーション本体に、Node.js が 使用されている 箇所が ある 場合などは、 インストールと いう 障壁が ないかもしれませんが、 アプリケーション本体に 使用されていない 場合、 インストールする 権限が なかったり、 権限が あっても、 インストールに よる 思わぬ トラブル回避の ため、 インストールが 難しい 場合が あります。 1 Good Old Web な
アプリケーション での Lint 環境
エンタープライズで<wbr>使用している<wbr>場合、<wbr>ソフトウェアの<wbr>インストールが<wbr>難しい<wbr>場合が<wbr>ある
の言い 換えかもしれないですが、 何の Lint も ない 状況からの、 はじめの Lint 。 「 Node.js 何それ おいしいの ? 」の 状況での 活用を 想定しています。 2
前提
以下の
OS
% sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 BuildVersion: 17E199
SonarQube の
version 7.1
Lint 対象の
リソース
Lint 対象のリソースは 以下の リソースに なります。 - ECMAScript 2015 で
書かれていない JavaScript、 ECMAScript 2015 で 書かれた Javascript - css、
scss、 less - HTML
- ECMAScript 2015 で
Lint Plugin を SonarQube に インストールする
FrontEnd Lint 目的で
SonarWeb
HTML, JSP, JSF 向けのLint plugin です。
これは、MarketPlace から インストールが 可能です。 SonarJS
SonarWeb
と同様で、 MarketPlace から インストールが 可能です。
私のLocal 環境では インストール済でした。
デフォルトでインストール済なのかもしれません。 1 sonar-css-plugin
元々は、SonarQubeCommunity/sonar-css と いう 名称の plugin でしたが、 別の リポジトリに 移動されています。 racodond/sonar-css-plugin: SonarQube CSS / SCSS / Less Analyzer
MarketPlace では配られていないため、 Github Repository の、 最新版の jar ファイルを、 plugin ディレクトリに インストールします。 2018/05/26 現在の
最新 Version
sonar-css-plugin-4.18.jarインストール先
SonarQube のpugin ディレクトリに インストールします。 cp ~/Downloads/sonar-css-plugin-4.18.jar /usr/local/Cellar/sonarqube/7.1/libexec/extensions/plugins
Client の 設定
sonar-scaner 側の
解析対象の
まず、
sonar-scaner 自体の
過去に
SonarQube SonarPython を
設定ファイル
sonar-project.properties
解析対象のプロジェクト直下に、 sonar-project.properties を 作成します。 sonar.projectKey=mezzanine-theme-clean-blog sonar.projectName=mezzanine-theme-clean-blog sonar.projectVersion=0.0.1 sonar.sources=clean_blog,clean_blog_frontend sonar.sourceEncoding=UTF-8 sonar.exclusions=**/node_modules/**,**/webpack_bundles/** sonar.login=admin sonar.password=admin sonar.javascript.jQueryObjectAliases=$,jQuery sonar.javascript.exclusions=**/node_modules/**,**/webpack_bundles/**,**/bootstrap.js,**/jquery.js
設定内容の
説明
デフォルトの設定可能な プロパティに、 SonarJS の 拡張プロパティのみ 追加したので、 その 説明を します。 sonar.javascript.jQueryObjectAliases
jQuery の参照の alias を 設定可能です。 sonar.javascript.exclusions
解析対象外とする ディレクトリ、 ファイル名を 設定します。
node_modules と、webpack の コンパイル後の jsの 配布先、 ライブラリ系の js を 解析対象外と しました。
sonar-scanner の 実行方法
プロジェクト直下に
sonar-scanner -D sonar-project.properties
Lint Rule に ついて
SonarWeb
SonarSource のRules Explorer に ルールの 一覧が あります。
Web Static Code Analysis Rules | SonarWeb Code AnalyzerSonarJS
SonarWeb と同様で、 SonarSource の Rules Explorer に ルールの 一覧が あります。
Javascript Static Code Analysis Rules | SonarJS Code Analyzersonar-css-plugin
racodond/sonar-css-plugin: SonarQube CSS / SCSS / Less Analyzer と、stylelint ルールとの 対応表が、 sonar-css-plugin/stylelint-sonarqube-rule-mapping.md at master · racodond/sonar-css-plugin に 記載されています。
SonarQube デフォルトルールは、
デフォルトルールを
参考
以下、
まとめ
SonarQube を
Java only で
以上です。
コメント