Quantcast
Channel: Sider Blog
Viewing all 182 articles
Browse latest View live

Yarnサポートおよびnpmパッケージのインストール動作変更のお知らせ

$
0
0

こんにちは、Sider開発チームの木庭です。

このたび、待望のYarnサポートの紹介と、npmパッケージをインストールする際の動作変更についてアナウンスをいたします。これらの変更はまだ適用されておらず、2019/8/20に皆様に提供する予定です。

今回の変更の影響を受けるのは、npmからインストール可能な以下の解析ツールとなります。

特に、ESLint、styelintを使用中で package.jsonがリポジトリ内に存在しないケースでは、解析が正しく動作しなくなる可能性があります。そのため、事前に本記事をご覧いただき、設定をご確認いただけますと幸いです。

以下、それぞれの変更点について、詳しく見ていきます。

Yarnサポート

かねてよりご要望の多かった、Yarnサポートを実施いたします。この変更をリリース後、Siderはリポジトリ内に yarn.lockファイルを見つけると、npm installコマンドを実行する代わりに yarn installコマンドを実行します。

これにより、package.jsonに書かれてあるツールのバージョンではなく yarn.lockに書かれてあるバージョンで解析が実行されるため、より皆様の開発環境に近い状態で解析が実行されることになります。結果として、Siderでの解析失敗を減らすことにつながり、解析失敗時のデバッグがより容易になると私たちは考えています。

例えば、以下のような package.jsonyarn.lockファイルがリポジトリ内にあるとします。

package.json:

{"devDependencies": {"eslint": "^5.10.0"
  }}

yarn.lock:

eslint@^5.10.0:
  version "5.10.0"

Yarnサポート以前は、ESLint 5の最新バージョンである eslint@5.16.0が解析に使用されます。一方、Yarnサポート以後は yarn.lock内に記載してある eslint@5.10.0が解析に使われることになります。

npm ciの利用

Yarnと同様に、Siderはリポジトリ内に package-lock.jsonファイルを見つけると、npm installコマンドの代わりに npm ciコマンドを実行するようになります。この場合も、yarn.lockと同様 package-lock.jsonに記載されているバージョンがインストールされますので、より開発環境に近い動作が期待できます。

また、npm cinpm installよりも高速ですので、解析時間の短縮が期待できます(npm ciの詳細については、npmのドキュメントをご参照ください)。

ちなみに、まれなケースだとは思いますが、 yarn.lockpackage-lock.jsonが同時に存在する場合、エラーとなりますのでご注意ください(Yarnもまた、その場合は警告を表示します)。

npmパッケージインストールの動作変更

今回のリリースで、npmパッケージインストールのデフォルトの挙動が変更になります。具体的には、sider.ymlで制御可能な npm_installオプションを省略した場合の挙動が変わります。

npm_installオプションの初期値:

  • 変更前: false
  • 変更後: true

この初期値の変更と、Yarnおよび npm ciのサポートをまとめると、変更後の動作は以下のステップとなります。

  1. package.jsonが存在するかチェックする。存在しない場合は、Sider提供のデフォルトバージョンを使用する。
  2. package.jsonかつ yarn.lockが存在する場合、yarn installを実行する。
  3. package.jsonかつ package-lock.jsonが存在する場合、npm ciを実行する。
  4. package.jsonが存在するが yarn.lockpackage-lock.jsonも存在しない場合、npm installを実行する。
  5. node_modulesディレクトリに対象となる解析ツールがインストールされたかチェックする。
  6. ツールがインストールされている場合、そのインストールされたバージョンを使用する。
  7. (何らかの理由で)ツールがインストールされてない場合、デフォルトバージョンを使用する。

ツールがインストールされなかった場合、Siderの解析結果ページとログページに警告が出力されます。それらの警告やログを参考に、package.jsonなどの設定を見直してみてください。

この npm_install省略時の挙動は、明示的に npm_install: trueを指定した場合でも変わりません。

また、npm_install: falseが指定された場合は、これまでと同様にインストールは実行されず、デフォルトバージョンが使用されます。インストールを回避したい場合は、明示的に npm_install: falseを指定してください。

ツールバージョン制約の追加

npmやYarnによってインストールされるツールのバージョンについて、制約が追加されました。ここでの「制約」とは、サポートされるバージョン範囲のことです。これは、Siderの動作を保証するための措置です。この制約に違反すると、解析が失敗します。

最低バージョンはSider解析の実行統計データをもとに決めたので、ほとんどのケースでは問題にならないと思われます。しかし、万が一この制約の範囲外のバージョンを使用したいケースが発生した場合は、サポートまでお知らせください。

以下、各ツールのバージョン制約となります。

  • ESLint: 3.19.0 ≦ x < 7.0.0
  • TSLint: 5.0.0 ≦ x < 6.0.0
  • CoffeeLint: 1.16.0 ≦ x < 3.0.0
  • stylelint: 8.3.0 ≦ x < 11.0.0

いずれのツールも、最新バージョンは利用可能です。この制約については、変更リリース後にドキュメントに反映します。

ツール設定ファイルからの自動インストール機能の廃止

今回の変更で、各ツールの設定ファイルの内容から必要なプラグインを自動で検出してインストールする機能が廃止されます。対象のツールは以下の通りです。

  • ESLint
  • stylelint

例えば、ESLintの設定ファイル(例..eslintrc.json)に以下のように記述されていた場合、Siderは eslint-plugin-reactを自動でインストールしようとします。

{"plugins": ["react"]}

しかし、この機能は様々なフォーマットの設定ファイル(例えば、JSONやYAML、JavaScriptなど)を解析する必要があるために実装の難易度が高く、加えてユーザーの皆様の環境でこの挙動を再現することが難しいため、廃止とすることが決定しました。

もしこの機能を使用している場合は、以下の例のように package.jsonに依存プラグインを明示的に追加することで代用できます。詳細は、各プラグインのドキュメントをご確認ください。

{"devDependencies": {"eslint": "^5.15.1",
    "eslint-plugin-react": "^7.14.3"
  }}

まとめ

変更内容は以上の通りです。今回の変更は、ユーザーの皆様の体験をより良いものすることを目的としており、できるだけ既存の解析を失敗させないように配慮しています。しかしながら、万が一リリース後に解析が失敗するようになった場合は、サポートまでフィードバックをいただけると幸いです。

再度繰り返しますが、リリース予定日は2019/8/20となります。

今回のアナウンスについて、フィードバックをいただけると非常に助かります。何かお気づきの点や疑問点がございましたら、お気軽にSiderの右下のチャットからお問い合わせください。


Yarnサポートのお知らせ

$
0
0

こんにちは、Sider開発チームの木庭です。

本日、事前アナウンスで予告していたとおり、Yarnサポートをリリースいたしました!

今回のリリースでは、Yarnサポートを含む npm 関連のいくつかの動作変更があります。かいつまんで列挙すると、次の通りです。

  • Yarnサポート(yarn.lockから必要なパッケージを自動インストールします)
  • 自動 npm パッケージインストール(特別な設定なしで package.jsonから解析に必要なパッケージをインストールします)

その他の詳細については、前述の事前アナウンスのブログ記事をご覧ください。

何かお気づきの点や疑問点がございましたら、お気軽にSiderの右下のチャットからお問い合わせください。

Siderの運営会社が2019年10月末日より株式会社スリークに変わります

$
0
0

こんにちは。Siderの角です。 Sider事業はSider株式会社から株式会社フィックスターズの100%子会社である株式会社スリーク(以下、「スリーク社」と記載)に10月末日に譲渡されます。そのため、10月末日に運営会社が株式会社スリークに変更になります。

運営会社は変更になりますが、私(角)含めSiderのチームは引き続きSiderを継続的に開発・運営していきますのでご安心ください。また、東証一部上場企業のグループ会社での運営となることで、今後より一層安定したサービスを提供出来る物と考えております。引き続きのご利用等をお願い致します。

変更内容

  • 運営会社が株式会社スリークに変更になります
  • 領収書・請求書などは株式会社スリーク、もしくはSleeek Co.の表記となります
  • お客様自身に作業頂く事などは何も無く、継続してご利用を頂けます

キャンペーンの実施

今回の変更を記念して、新規ユーザ様向けにトライアル期間延長キャンペーンを実施致します。具体的な内容は下記の通りです。

  • Freeプラン、もしくは未登録の方について、従来2週間のトライアル期間だったところを、3ヶ月に延長致します
  • このキャンペーンは10月3日〜10月31日の間に会員登録、もしくはトライアル延長等のお問い合わせを頂いた方が対象となります
  • Sider(クラウド版)、Sider Enterprise(オンプレミス版)の両方がキャンペーン対象です

アカデミック版の提供開始

  • 大学の教職員や学生の方、高等専門学校の方向けにアカデミック版プランを提供します
  • 詳細についてはお問い合わせください
  • アカデミック版ではSider Enterpriseが無料で提供されます

株式会社スリークについて

スリーク社はAI によるソフトウェア開発マネジメントサービス「Sleeek」を提供しています。コードレビューに関する機能もSleeekは内包をしておりますが、Siderとの合流・統合により、Sleeek内でのコードレビュー関連機能についてはSiderが担う事となります。

また、Siderはソフトウェアエンジニアの方に対しコードレビューの自動化のみを提供しておりましたが、補完関係であるSleeekを通じてマネージャー向けの機能群などを提供することで、より開発チームの生産性の向上に寄与していきたいと考えております。

また、スリーク社及びフィックスターズ社のソフトウェア高速化技術、AI技術などを活用し、新しい機能、価値提供を進めて参ります。

スリーク社はアメリカのカリフォルニア州、アーバインにも拠点(現地法人: Sleeek, Inc.)を置いており、アメリカでのSiderの普及にも力を入れて参ります。

sleeek.io SleeekはGitHub、GitLab、JIRA、Slackなどの複数のデータソースから多角的な分析を行い、Slackに適宜通知(Slack Chat Bot)。ルーチンワークの削減やチームコミュニケーションの向上、プロジェクトの健全性などを保つことに貢献します。

今後のSiderについて

基本的には今までと大きくは変わりませんが、スリーク社やフィックスターズ社の技術の活用の他、著名な3つの大学との協同研究を開始、進めており、研究成果を活用し、コードレビューの自動化の精度・範囲の拡大や、ソフトウェア開発生産性の向上を進めて参ります。

今まで以上に大きな価値を皆様に提供出来るよう努めて参ります。 今後ともどうぞよろしくお願いいたします。

Kotlin、C/C++、Shell scriptのサポートを開始しました

$
0
0

こんにちは。Siderの角です。
直近1ヶ月ほどでKotlin、C++、ShellScriptの3言語のサポートを追加しました。
スマートフォンアプリケーション、組み込み系プログラム、手元のシェルスクリプトやインフラの管理のためのシェルスクリプトなど、より幅広い範囲のコード・プロジェクトでお使い頂けるようになりました。

各言語のサポート解析器

それぞれの言語では下記のような解析をサポートしています。

Kotlin

C/C++

ShellScript

新しくサポートが追加されたktlint、Cppcheck、cpplint、ShellCheckは現在ベータ提供のため仕様が変更される可能性がございます。予めご了承ください。

今後のSiderについて

従前のSiderの機能や方針は継続致しますが、それに加えて、先日お伝えした運営会社変更に伴い、製造メーカー向けの機能や大規模企業・チーム向けの機能などの開発提供にも今後力を入れて参ります。
https://blog-jp.sider.review/entry/sider-join-sleeek-team

今後ともご利用の程よろしくお願い致します。

GitHub Appsへの切り替えのお願い【2020-1-16迄】

$
0
0

いつもSiderをご利用いただき、まことにありがとうございます。
Siderは現在GitHub OAuth AppsとGitHub Appsの両方の方式で稼働をしていますが、間もなくGitHub Appsのみに変更をさせていただく予定です。
そのため、GitHub OAuthでご利用中の方は、GitHub Appsに切り替えを行っていただく必要がございます。

お手数ではございますが、GitHub OAuthにてご利用中の方は、お早めに移行をしていただけますと助かります。現在GitHub Appsをご利用中のユーザー様には、影響ありません。

移行について

期日

2020年1月16日(水)
すべてのユーザの方々の移行が終わったタイミングで移行を前倒しする可能性があります。

内容

上記の期日までにGitHub Appsへ移行していないオーガニゼーションにつきましては、プルリクエストの解析が実行されなくなり、解析エラー扱いとなります。このエラーを回復していただくにはGitHub Appsへの移行を完了し、該当プルリクエストの解析を再実行していただく必要があります。

移行に関する注意点は、次の通りです。

  • 現在契約中のプランが解約されることはありません
  • この移行によってSider上のデータが消えることはありません
  • 変更に要する作業時間は数分程度です

移行理由

  • GitHub Appsでは、Checks APIなどの新しい機能を利用できます(今後の予定)。
  • GitHub Appsでは、リポジトリに別途botユーザーを登録する必要がありません。これにより、botに登録したユーザーが退職などで所属オーガニゼーションを離れてしまった場合、GitHubにSider issueコメントを送信できなくなる、といった事態を防げます。また、botのためのシートを消費することもありません。
  • GitHub Appsは、GitHubの公式に推奨された方法です。
  • GitHub Appsはリポジトリごとに権限を付与する方式なので、OAuth Appsと違って不要なリポジトリにSiderがアクセスできないようにすることができます。こちらの方が、よりセキュアです。

移行方法

移行は、以下のステップに従って、オーガニゼーションの管理者がおこなってください。

f:id:sideci:20191218131202g:plain
Migrate to GitHub Apps

ステップ1

Sider上のオーガニゼーションページにアクセスし、Activate & Migrateボタンをクリックします。このボタンが表示されてない場合、そのオーガニゼーションはすでにGitHub Appsに移行済みですので、これらのステップは省略可能です。

ステップ2

次に、GitHub上のインストールページに自動的に移動します。ここで All repositoriesまたは Only selected repositoriesを選択してください。両者の違いは次の通りです。

All repositories:

インストール後に解析したいリポジトリを追加する際には、Sider上でリポジトリを追加していただくだけで可能です(現状と同様)。 本オーガニゼーション内のすべてのリポジトリに対して、Siderはアクセスすることが可能です。

Only selected repositories:

  • インストール後に解析したいリポジトリを追加する際には、GitHub上の Applications(個人アカウント向け)もしくは Installed GitHub Apps(オーガニゼーション向け)ページでSiderを選択し、追加したいリポジトリをご選択いただき、その後にSider上でリポジトリ追加を行っていただく必要がございます。
  • 現在のOAuth Appsより利便性は損なわれますが、Siderがアクセス可能なリポジトリを制御することができます。選択されていないリポジトリにSiderがアクセスすることはできません。

この設定は、インストール後でもGitHub上で変更することが可能です。

ステップ3

選択し終えたら、Installボタンをクリックします。インストールが正常に完了すると、Siderのページにリダイレクトされます。以上で移行は完了です。プルリクエストは今まで通りに解析されます。

この移行に関して質問がある場合は、サポートまでご連絡下さい。

以上、お忙しいところお手数をおかけしますが、ご確認のほど何卒よろしくお願い致します。

SiderにてGo Meta Linterやgo vet、golintをお使いの方はGolangCI-Lintへの移行をお願いします。(2020年5月末迄)

$
0
0

いつもSiderをご利用いただきありがとうございます。Go Meta Linterが公式にもDeprecatedになっておりますため、Siderでは新しく、移行先としてGolangCI-Lintをサポートしています。この度、2020年5月末日をもってSiderのGo Meta Linterのサポートを終了することになりましたため、GolangCI-Lintへの移行をお願いいたします。

2020年5月末日時点でGo Meta Linter、go vet、golintが有効になっている場合、それらは無効になり、代わりにGolangCI-Lintが有効になります。事前の移行をおすすめいたします。

移行方法

  1. Go Meta Linterやgo vet、golintを使っているリポジトリの設定ページに遷移し、GolangCI-Lintを有効にして下さい
  2. Go Meta Linter、go vet、golintを同画面から無効にして下さい
    • go vet、golintもSider上ではGo Meta Linterを経由して実行するという手法をとっております。そのため、今回のGo Meta Linterのサポート廃止と同時に、go vet、golintの単独での実行サポートを廃止することとなりました
    • go vet、golintをお使いになりたい場合にはGolangCI-Lintを介してお使いいただく事ができます
    • SiderでGoLangCI-Lintを有効にするとその内部でgo vetとgolintは実行されますので追加の設定がなくても実行はされます

GoLangCI-Lintについて
公式サイト: https://github.com/golangci/golangci-lint
Siderドキュメント: https://help.sider.review/tools/go/golangci-lint

以上、お手数をおかけして恐縮ですが、利便性の向上のためにも、GolangCI-Lintへの移行をお願い致します。今後ともSiderをどうぞよろしくお願いいたします。

sider.ymサンプルファイル追加のPull Requestを行う機能のリリースのご案内

$
0
0

こんにちは。本日、リポジトリを新規にSiderに追加した際に、sider.ymlのサンプルファイルを作るPull Requestを当該のリポジトリに作成する機能をリリースいたしました。
また、当該機能の利用にあたってはSiderからGitHubに対して新しいパーミッションが要求されます。GitHubからメールが届くかと思いますのでよろしければ承認下さい。

今後、リポジトリを追加する際に、下記のようなチェックボックスがリポジトリ追加時の最終ページに表示されます。チェックを入れられた場合、sider.ymlを追加するPull Requestが自動的に作成されます。 もしご希望されない方はチェックを外して下さい。

f:id:sideci:20200514163912p:plain
Siderに新規リポジトリを追加する際の設定画面の新項目

緑色の "Start..."ボタンを押した後、そのリポジトリに対して下記のようなPull Requestが作成されます。

f:id:sideci:20200514163837p:plain
sider.ymlを作成するPull Request

上記で作られる sider.yml は書き方が分かるサンプルファイルのようなものですので、必要に合わせてご修正下さいませ。

新機能リリースについては基本的には、下記に記載をさせていただいております。
よろしければこちらも御覧ください。(ブログでは一部だけをご案内しております)

help.sider.review

引き続きどうぞよろしくお願いいたします。

2020年6月9日(火)データベースメンテナンスのお知らせ

$
0
0

いつもSiderをご利用いただきありがとうございます。

6月9日火曜日、メンテナンスのため sider.reviewは午後9時(JST)から約1時間ダウンします。 プラットフォームにおける重要なデータベースメンテナンスを実行します。この間、すべての操作が停止されます。

メンテナンスの進捗は、随時ステータスページにて確認いただけます。

ご不便をおかけしますが、ご理解のほどよろしくお願いいたします。


最新版のBrakemanが利用可能に。その他、C/C++向け機能強化、コピペ検知のリリースなど

$
0
0

こんにちは。いつもSiderをご利用頂きありがとうございます。
製品のアップデートについては随時下記サイトにて案内をさせていただいております。
News in 2020 · Sider Documentation

今回は少々大きめのアップデートのため、ブログ記事として本記事を記載いたしました。

直近のリリース内容について

  • Ruby on Railsの開発者向けに、セキュリティ脆弱性解析ツールBrakemanの最新版を提供開始
  • C/C++向けに、フロー解析などを行うCppcheck 2.0のbug-hunting機能を提供開始
  • コピペを検知するPMD CPDの提供を開始

Brakemanについて

BrakemanはRuby on Rails向けのセキュリティ脆弱性スキャナとして有名なソフトウェアです。Siderはリリース当初からBrakemanをサポートをしていましたが、ソフトウェアのライセンスが変更されたため、変更前のMITライセンスのBrakemanをサポートしていました。今回Brakemanの商用利用が可能になったため、Brakemanの最新版の提供を開始しました。

Brakemanは現在Brakeman Public Use Licenseで提供されており、商用利用にはSynopsys社との契約が必要になっています。契約が無事締結できましたため、本機能の提供を開始することができました。

brakeman/LICENSE.md at main · presidentbeef/brakeman · GitHub

関連プレスリリース: prtimes.jp

Cppcheck 2.0のbug-hunting

C/C++向けにCppcheckのサポートを追加しておりましたが、今回、2.0にメジャーアップデートを行いました。
その際にbug-huntingといわれる新しい機能が追加されており、より多くの問題・複雑な問題を検知出来るようになりました。bug-huntingの内容については公式サイトを御覧ください。

cppcheck / News: Cppcheck-2.0

コピペを検知するPMD CPDの提供を開始

現在この機能はβ版として提供しており、デフォルトでは無効になっています。お試しになりたい方はリポジトリ設定から有効にしてください。
Pull Request内にDiffの内外問わず、重複したコードが合った場合に、Sider上でそれを検知してお知らせします。 コピペとみなすトークン数などは下記を参考に設定をお願いいたします。

PMD CPD · Sider Documentation

直近のSiderのアップデートと今後のお知らせ方法について

大きなアップデートについてはブログ記事やメールでご案内させていただくこともありますが、多くの場合、Intercom(サイト上のチャット)もしくは下記サイトでのご案内となります。

News in 2020 · Sider Documentation

一部こちらに抜粋させていただくと下記のとおりになります。

  • 月に1回程度デフォルトのバージョンの解析器のアップデート
  • 新しい解析器のサポート
    • PMD CPD(コピペ検知)
    • Pylint
    • CppcheckのAddonのサポート
      • bug-hunting
      • MISRA C, CERT Cなどのチェック
    • LanguageTool(文法等のチェック)
    • FxCop(Unityや.NetなどのC#のソースコードの解析)
    • remark-lint(Markdownファイルのチェック)
    • GolangCI-Lint(Golang)
    • detekt(Kotlin)
  • リポジトリ追加時のsider.ymlの雛形の作成Pull Requestの送付

今後も機能強化や新しい機能の追加などを行ってまいります。引き続きご利用いただくとともに、なにかご要望等ありましたらご遠慮無くご連絡くださいませ。どうぞよろしくお願いいたします。

Python 2サポートを2020年10月末に終了します

$
0
0

いつもSiderをご利用いただきありがとうございます。

Python 2のメンテナンス終了を受けまして、Siderは2020年10月末にPython 2サポートの終了を予定しています。もし、Flake8をお使いであれば、Flake8がPython 3でも動作することをご確認ください。また、sider.ymllinter.flake8.versionのパラメーターがセットされている場合2020年10月末までにこのパラメーターを削除するようお願いいたします。

 linter:
   flake8:
     target: src/
-    version: 2

何かご不明な点がありましたらサポートまでご連絡ください。今後ともSiderをどうぞよろしくお願いいたします。

2020年11月12日(木)データベースメンテナンスのお知らせ

$
0
0

いつもSiderをご利用いただきありがとうございます。

11月12日木曜日、メンテナンスのため sider.reviewは午後9時(JST)から約1時間ダウンします。

この時間、GitHub上で作成されたプルリクエストに対する解析が行われなくなるため、GitHub上でのワークフローに影響が出る恐れがあります。 メンテナンス中に作成されたプルリクエストをメンテナンス後にSiderに解析させるには、新しいコミットをpushするか、プルリクエストをリオープンするようお願いいたします。

メンテナンスの進捗は、随時ステータスページにて確認いただけます。

ご不便をおかけしますが、ご理解のほどよろしくお願いいたします。

SiderでMISRA C規格準拠チェックが可能に。組み込みソフトウェアの開発にSiderによるMISRA C/C++チェックを

$
0
0

こんにちは。いつもSiderをご利用頂きありがとうございます。
SiderがMISRA C コーディングガイドラインの解析に対応いたしましたので、ご紹介します。
これにより、プルリクエスト単位で、そのプルリクエスト内で修正されたソースコードがMISRA C:2012に違反していないかを常時チェックすることが出来ます。

SiderではCppcheckという解析エンジンを用いております。そのエンジンのアドオンmisraを有効にする記載を、Siderの設定ファイルに記載していただくことでご利用いただけます。

sider.yml

linter:cppcheck:addon:- misra

MISRA C とは?

MISRA C とは Motor Industry Software Reliability Association (MISRA) が策定しているC言語のコーディングガイドラインです。
組み込み制御システムや車載ソフトウェアといった高い水準の安全性を求められるソフトウェアの開発者向けに、ガイドラインのベストプラクティスを提供しています。

MISRA C はもともと自動車分野向けに策定されました。しかし、今日では鉄道/航空宇宙/医療機器などの幅広い組み込みソフトウェア分野でも採用されています。
このような高い水準の安全を求められる開発現場で、安全性/可搬性/信頼性を確保するために MISRA C ガイドラインを利用する場面が増えております。

Siderの Cppcheck MISRA C アドオン対応

Siderは既にC/C++言語向けにCppcheckのサポートしておりましたが、今回、 MISRA C アドオンに対応いたしました。

Cppcheckの MISRA C アドオンでルールのメッセージを表示するためには、使用者ごとにMISRAからガイドラインのドキュメントを購入する必要があります。
しかし、このたび、SiderはMISRAと契約を締結しましたので、ルールのメッセージを当プロダクトに組み込んで提供を開始いたしました。
なお、そのルールのメッセージは無制限には公開できないため、解析対象がprivateなレポジトリの場合のみ表示されます。

f:id:sideci:20201109130902p:plain
Siderでの解析の実行例

もし、複数の解析器を有効にして実行していたり、報告されたissueの数が多い場合には、「高度な検索」をクリックしてフィルタしてください。ツールとして Cppcheck、そして所望のルールIDを適用することで、 MISRA C の結果のみを表示することができます。

f:id:sideci:20201109130948p:plain
高度な検索機能によるフィルタ

MISRA C:2012 のSiderのカバー範囲

SiderではCppcheckの MISRA C アドオンを利用して、MISRA C:2012 の143件のルールのうち99件をサポートしています。カバーしていない44件ほどはSiderではチェックすることは出来ません。
それらの項目の多くはコンパイルが必要なためであり、迅速に解析を行うSiderのサービス性質上提供が難しいため、現時点ではそれらを提供する予定はありませんが、欠落しているそれらのルールについての一部はgccなどを使っていただくことで補っていただく事ができます。

Sider(内のCppcheck MISRAアドオン)でPull Request・Merge Request単位を高速に解析し、必要に応じて、CI/CDなどでコンパイラをあわせてご利用いただき、カバー範囲を増やしていただくのが良いかと思います。

他社のMISRA Cチェック機能を持つ製品との比較・使い分けについて

MISRA C設計標準規格をチェックする製品は非常に多く存在しています。よく知られているものだと、Synopsis社のCoverity静的解析ソリューションや、PARASOFT社のC++test、Micro Focus社のFortifyなどがあります。それらとSiderの違いについて2軸で説明させていただきます。

アジャイル開発、GitHub/GitLabを用いた開発に最適化されたSider

Siderは比較的新しい製品です。現時点では、ローカルでのコマンドライン実行やIDEとの連携、Jenkins(CI/CDサーバー)上での実行などには対応していません。一方で、GitHubやGitLabのPull Request・Merge Requestとの連携に対応しています。
他社製品であればQAフェーズの前工程やQAフェーズなど、開発工程の後半で利用することが主だった利用シーンですが、Siderの場合は最初のコミットから、差分だけを確認をして、MISRA規約違反のコードを発見、修正していくことが出来ます。そのため、他社様の製品をすでにご利用頂いている環境にSiderを導入いただいた場合、それらの製品で後工程で確認する際に、Siderが指摘した分の内容が減るため、後ろの工程での修正や対応時間などを減らすことが出来ます。

開発者は昔に書いたコードを再度確認して修正するのではなく、ついさっき書いたコードに対して、Pull Request・Merge Request単位で確認をし、迅速に修正を行うことが出来ます。それにより高い生産性でMISRA準拠のコードを書くことが出来ます。

非常に安価。1500円から利用可能。追加費用もなし

Siderは1ユーザーあたり月額1500円の利用料でご利用いただけます。クラウド版の場合、サーバーコストも掛かりませんので、非常に安価にご利用いただけます。また、インストールも数クリックと、先述の通り設定ファイルを数行書くだけで済むため、総合的に様々な面でコストは非常に低いです。

1プロジェクトあたり数百万円単位の製品が多い中、プロジェクト数は無制限、ユーザーあたり1500円(100名の場合でも月間15万円、年間180万円でプロジェクト数無制限)と非常に安価であるため、ぜひご検討を頂ければ幸いです。

Pull RequestやMerge Requestだけでなくプロジェクト全体を検査したい

MISRA C規格に準拠しているかの確認についてはおそらく、Pull RequestやMerge Request単位だけでなく、プロジェクト・リポジトリ全体を検査したいというニーズもあるかと思います。
こちらの機能は近日中に提供予定です。少々お待ち下さい。ご興味ある方がいらっしゃいましたらぜひお問い合わせください。

おわりに

Siderはユーザ様のニーズに合わせて様々な発展・機能追加や対応言語追加などを行っております。
ぜひSiderをご利用いただき、また、なにかご要望がありましたら下記製品サイトの画面右下のチャットよりお声がけください。

sider.review

今後ともSiderをどうぞよろしくお願いいたします。

概要表示の使い方

$
0
0

Sider Labs の解析結果の画面(ダッシュボード)では、様々な方法でコードクローンの分析を行うことができますが、この記事では「概要」タブにおけるコードクローンの可視化機能について使い方を説明します。

概要タブには、ホイール表示とマトリックス表示という2つのクローンの可視化パネルがあります。ホイール表示は、プロジェクトの全ファイルのうち、コードクローンが存在するファイルのみを抽出し、同一のクローンを持つファイル間の関係を図示したものです。プロジェクトのファイルが円環に沿って表示されています。円環を繋ぐように飛んでいる円弧が2つのファイル間に存在するクローンになります。円弧の幅がクローンのステートメント数に対応しており、円弧をクリックすると、実際のクローンのコードを閲覧できます。一方で、同一ファイル内部のクローンは円環のうえの「コブ」として表現されています。もし、ある程度大きな幅で、異なる2つのファイル間にまたがる円弧が表示されていたら、クローンの内容を確認することをお薦めします。ユーティリティ関数やクラスとしてまとめることで、コード品質をあげられるかもしれません。

ホイール表示の例

例えば上図はある3D画像処理のオープンソースソフトウェアのレポジトリを分析したものですが、”vmStackedVolume.cpp”(黄色)と、”vmBlockVolume.cpp”(ピンク)との間には、ステートメント数が30 から150程度のクローンペアが10個以上検出されており(図中右下の赤い点線部)、ファイルの名称も近いことから何らかの形で共通化できる余地がありそうです。

次に、マトリックス表示ですが、こちらはクローンを持つファイル名がアルファベット順でX軸、Y軸に配置されています。X軸、Y軸に並んでいるのは同じファイル名のリストです。X軸の一つのファイルと、Y軸の一つのファイルとの間にコードクローンが存在する場合、そのセルはクローンのステートメント数に応じて白から赤までの色がつきます。グレーのセルはクローンが無いことを示しています。対角線上は同一のファイルとなりますが、ここでは同じファイル内で存在するクローンの量を色で示しています。

表示するデータは、マトリックス表示もホイール表示も同じものです。しかし、マトリックス表示の方がクローンの全体像をより俯瞰した視点でみるのに役立ちます。一例として、ファイル名が近いものは、意外にもクローンが多いことがあり、ある程度まとまったクラスタのような分布を見つけることができます。この場合、基底クラスを作成して、複数のクローンを基底クラスからの継承などでまとめられないか検討する価値があるでしょう。

マトリックス表示の例

非常に大規模なプロジェクトの場合、ファイル相関図(ホイール表示、マトリックス表示)のファイル名や表示がほとんど見えなくなってしまうことがあります。今後、UI/UXの改善を行っていく予定ですが、ホイール表示の円環や、マトリックス表示のセル部分にマウスオーバーすると全ファイル名が表示されます。また、図の右上の「拡大」ボタンで図を拡大することもできます。ホイール表示に関しては、拡大した場合、「重要度トップ10」や「クローン数トップ10」のファイルのみで描画することもできます。ご活用下さい。

The post 概要表示の使い方 appeared first on Sider Labs Blog.

リリースノート2020年10月8日

$
0
0

Version v1.01.00.009

新機能

不具合修正

  • インポート時のプログレスバーが進捗を正しく表示しない問題を修正しました。

Sider Labs は、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年10月8日 appeared first on Sider Labs Blog.

リリースノート2020年10月12日

$
0
0

Version v1.01.00.011

機能改善

  • v1.01.00.010 で改良した重要度の算出方法(下記参照) をさらに改良しました。
  • 重要度の算出方法の変更に伴い、FAQでの説明文を最新の情報に更新しました。

不具合修正

  • 表示上の軽微な不具合を修正しました。

Version v1.01.00.010

機能改善

  • 重要度の算出方法を改良しました。様々なオープンソースソフトウェアプロジェクトを分析した結果、注意すべきコードクローンは類似度やステートメント行数だけではなく、クローン部分の制御文の複雑さやステートメントのバリエーションの豊富さが関与していることがわかり、それらの要素を加味した新しい重要度の算出方法に変更しています。
    重要度の計算はこれがベストというわけではなく、様々なプロジェクトの分析や、ユーザーインタビューを通して、今後も改善されていきます。
重要度の計算方法を変更しました
  • 解析結果の表示スピードを改善しました。今までは、非常に大規模なプロジェクトを分析した際に、重要度の表示が遅くなることがありました。今回の改善で、大規模なプロジェクトであっても高速に分析結果を表示できるようになりました。

Sider Labsは、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年10月12日 appeared first on Sider Labs Blog.


リリースノート2020年10月22日

$
0
0

Version v1.01.00.012

機能改善

  • サービス名称をSider Labs に変更しました。
  • デザインを変更しました。

不具合修正

  • 表示上の軽微な不具合を修正しました。

Sider Labsは、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年10月22日 appeared first on Sider Labs Blog.

リリースノート2020年10月26日

$
0
0

Version v1.01.00.013

機能改善

  • 英文表示に対応しました。

不具合修正

  • 表示上の軽微な不具合を修正しました。

Sider Labsは、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年10月26日 appeared first on Sider Labs Blog.

リリースノート2020年10月30日

$
0
0

Version v1.01.00.014

機能改善

  • 解析結果の画面の表示を改善しました。

不具合修正

  • 軽微な不具合を修正しました。

Sider Labsは、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年10月30日 appeared first on Sider Labs Blog.

2020年11月12日(木)データベースメンテナンスのお知らせ

$
0
0

いつもSiderをご利用いただきありがとうございます。

11月12日木曜日、メンテナンスのため sider.review は午後9時(JST)から約1時間ダウンします。

この時間、GitHub上で作成されたプルリクエストに対する解析が行われなくなるため、GitHub上でのワークフローに影響が出る恐れがあります。 メンテナンス中に作成されたプルリクエストをメンテナンス後にSiderに解析させるには、新しいコミットをpushするか、プルリクエストをリオープンするようお願いいたします。

メンテナンスの進捗は、随時ステータスページにて確認いただけます。

ご不便をおかけしますが、ご理解のほどよろしくお願いいたします。

The post 2020年11月12日(木)データベースメンテナンスのお知らせ appeared first on Sider Labs Blog.

リリースノート2020年11月10日

$
0
0

Version v1.01.00.015

表示変更

  • 新サイト公開に伴い、Sider Labs のアプリケーションページをsiderlabs.com/labs に移動しました。
  • 広告の表示形式を変更しました。

不具合修正

  • 軽微な不具合を修正しました。

Sider Labsは、開発者にとって有益な情報を提供できるよう今後も性能改善・機能拡張を続けてまいります。引き続きよろしくお願いいたします。

The post リリースノート2020年11月10日 appeared first on Sider Labs Blog.

Viewing all 182 articles
Browse latest View live