読者です 読者をやめる 読者になる 読者になる

JS自動レビューツール"jswatchdog"を公開しました

こんにちは。kintone 開発チームの天野 (@ama_ch) です。すっかり春らしくなりましたね。

少し前に JS の自動レビューツール jswatchdog をオープンソースで公開しましたので、こちらで紹介させていただきます。

使い方

jswatchdog

https://kintone.github.io/jswatchdog/

上記の URL を開き、左側のエディタに JS コードを貼り付けるだけです。 右側に修正が必要な箇所が表示されるので、適宜修正します。

特徴

  1. バリバリの開発者じゃなくても使いやすい一画面完結の Web インターフェース
  2. lint ツールでお馴染みの構文チェックの他、知らずに脆弱性を作り込むことを避けるため、XSS の可能性がある箇所にも警告を表示

内部的には、JS の静的構文チェックツールとして ESLintJSHint を組み込んでいます。 さらに XSS の可能性がある箇所を特定するため JSPrime を使用しています。 これらのツールを組み合わせることで、潜在的な問題点と脆弱性に繋がる危険性のあるコードを一定のレベルで検出できるようになっています。

背景

kintone には JavaScript を利用してカスタマイズする機能があり、管理者が任意の JavaScript ファイルをアップロードすることができます。 JS API などを利用して手軽にカスタマイズできるのは魅力ですが、不適切なコードを書くとご存知のように XSS 脆弱性を生み出す恐れがあります。

これまでサイボウズ社内では、カスタマイズ JS ファイルの適用前にプログラマによるコードレビューを実施することで、社内でカスタマイズされた kintone に脆弱性が作り込まれないようにしていました。

ここ1年ほどでカスタマイズ JS が作成される機会が増えましたが、JavaScript に不慣れなメンバーが作成したものも多く、レビューにかかるコストが無視できなくなってきました。 レビュー担当者によって指摘内容にばらつきが出ることもあったため、レビューコストを減らしつつコードの品質を保つことを目的に jswatchdog を作成しました。

まとめ

現在サイボウズ社内では、カスタマイズ JS ファイルを作成したら jswatchdog のエラーをすべて潰してからプログラマのレビューを受けるという運用になっています。

レビューの完全自動化とまではいきませんが、作成されるカスタマイズ JS の品質は格段に良くなっており、効果を実感しています。 今後は社外にも利用を促進し、みなさんが安心してカスタマイズ JS を作成できる仕組みづくりに貢献できればと思います!