忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/11    10« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  »12

JS コードの複雑さを測定する plato

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

JS コードの複雑さを測定する plato

ソースコードレビューの自動化をしたい

私は仕事で開発者向けの研修を担当している。研修には合否判定試験があり、そこではソースコードレビューを行う。しかし、これがなかなか大変であり、時間がかかる。受講生がたくさんいた場合は夜遅くまで会社に残ることになる。そこで、ソースコードレビューを自動化したいがなかなかうまくいかない。gjslint 等を導入してはいるが、壊滅的に [自主規制] なコードはそれだけではフィードバックできないのだ。

そんな経緯で綺麗なコードは自動採点にお任せ、壊滅的なコードはキチッと目視確認して丁寧にフィードバックする、というアイディアが出てきた。だが、採点対象が壊滅的なコードが否かを測る手段が難しい。その為の手段として今検討しているのが plato と呼ばれるライブラリである。

出力結果

HTML によるレポートと json 形式の情報の双方を出力する。

HTML の形式は jQuery を使ったサンプルがあるのでそれをみると感じがつかめるだろう。

JSON 形式はファイルごとに分割して出力される。HTML でも各ファイルごとのレポートが出せるが (例: jQuery の src/ajax.js)、各ページの元になっているようだ。各ファイルごとに以下の情報が出力されていた。

  • info……ファイルの位置情報など。json を元にインデックスを作るときに便利かも
  • jshint……jshint の結果。jshint はよく使われている自動コードレビューツールなのでありがたみがある
  • complexity……コードの複雑さの指標。

今回の場合 complexity が主要な情報となるわけだが、情報が多い。とりあえず、 effort という値が大きければ大きいほどコードは複雑さを増し読みにくくなる。これはコードの長さと複雑さを乗算した値なので、これを使うのが一番評価は容易だと思われる。より詳細な評価や関数ごとの評価も出力されているので、使えばより細かく評価をやれそう。

今回採用するやり方

提出された各ソースコードに対して effort の値を出力、一定以上ならば手動で評価するように採点者には依頼し、そうでなければ自動採点で済ませる。どこをラインにするかは難しいが、そこはもはや自動採点と手動採点を並行運用して見つけるしかない……

関係リンク

PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R