1 00:00:01,260 --> 00:00:03,390 このビデオでは Pharo の 2 00:00:03,557 --> 00:00:06,040 コードの品質をチェックするアシスタントを 3 00:00:06,207 --> 00:00:08,640 お見せします。 4 00:00:08,807 --> 00:00:11,450 クオリティアシスタントあるいは コードクリティクスと呼ばれるものです。 5 00:00:11,617 --> 00:00:14,770 コード上に良いプラクティスのルールを 走らせます。 6 00:00:15,710 --> 00:00:17,040 より詳細に見ていきましょう。 7 00:00:17,300 --> 00:00:19,220 クラスをブラウズするたびに 8 00:00:19,387 --> 00:00:22,770 ポップアップが表示されるのを 見たと思います。 9 00:00:22,937 --> 00:00:25,300 実際に起こっていることは 10 00:00:25,467 --> 00:00:27,770 ブラウズしている間 自動的に 11 00:00:27,937 --> 00:00:32,010 (CubHelix を選んでみましょう) 12 00:00:32,177 --> 00:00:35,740 この小さな領域に 13 00:00:37,020 --> 00:00:40,390 表示されています。 そしてパッケージの場合にも。 14 00:00:43,110 --> 00:00:46,350 説得力のある例を見つけるのは 15 00:00:46,517 --> 00:00:49,240 少し難しいのですが 例題のコードを使って 16 00:00:49,407 --> 00:00:52,090 汚いコードをその中に書いくと 表示されます。 17 00:00:52,280 --> 00:00:57,080 Counter に行って 18 00:00:57,247 --> 00:01:00,480 例えばデバッグ用のコードを残すと 19 00:01:02,350 --> 00:01:04,730 システムはここで自動的に 2 つのことを 伝えてきます。 20 00:01:05,180 --> 00:01:09,310 デバッグ用のコードが 21 00:01:09,477 --> 00:01:12,200 メソッドに残されていると言っています。 どうしましょうか? 22 00:01:12,940 --> 00:01:14,540 このルールがどうして出てきたかはわかります。 23 00:01:14,707 --> 00:01:16,680 クリックすると 24 00:01:16,847 --> 00:01:19,800 ブレークポイントを使うように言ってきます。 プロダクションコードではあまり賢いやり方ではありません。 25 00:01:21,280 --> 00:01:25,260 自動的に解決できると言っています。 26 00:01:25,427 --> 00:01:26,340 では試してみましょう。 27 00:01:27,300 --> 00:01:28,530 これを消すように言ってきます。 28 00:01:28,720 --> 00:01:30,240 はい、これで良いです。 29 00:01:30,950 --> 00:01:32,710 そしてその結果 もう問題はありません。 30 00:01:34,540 --> 00:01:36,700 プログラミングしている時に 31 00:01:36,867 --> 00:01:40,100 こうしているのを今までも見てきました。 システムが反応してくれます。 32 00:01:40,460 --> 00:01:43,350 さて、もう 1 つのやり方があります。 33 00:01:43,517 --> 00:01:48,250 対象のパッケージを クリティックブラウザで開きます。 34 00:01:48,417 --> 00:01:49,460 今回はとても小さなパッケージです。 35 00:01:50,960 --> 00:01:55,460 間違えてみて、どうなるか見てみましょう。 36 00:01:55,627 --> 00:01:56,440 ここで self halt とするか 37 00:02:01,020 --> 00:02:02,790 あるいは別のメソッドで 38 00:02:03,460 --> 00:02:06,910 increment3 メソッドを作って 39 00:02:07,077 --> 00:02:08,790 存在しないメソッドを使ってみます。 40 00:02:08,957 --> 00:02:11,740 foofoo としましょう。 41 00:02:13,110 --> 00:02:16,010 さて、ここで赤なわけですが 42 00:02:16,177 --> 00:02:18,900 頭が熱でぼーっとしたりして 気付かなかったことにしましょう。 43 00:02:20,590 --> 00:02:24,360 コードをクリティックブラウザで開くと 44 00:02:27,380 --> 00:02:31,250 クリティックブラウザは 45 00:02:31,417 --> 00:02:32,770 一連のルールを表示します。 46 00:02:33,720 --> 00:02:38,620 実際、沢山のルールが 47 00:02:38,787 --> 00:02:42,790 説明付きで示されています。 もしこのコードがあったら 48 00:02:42,957 --> 00:02:46,200 こうしたほうが良い 49 00:02:46,367 --> 00:02:47,450 もし内部でアロケーションがあれば。 50 00:02:47,617 --> 00:02:49,620 ルールには数種類あります。 51 00:02:50,040 --> 00:02:52,160 最適化に関係したルールや 52 00:02:52,327 --> 00:02:54,300 潜在的なバグを特定するためのルールや 53 00:02:54,650 --> 00:02:56,600 バグを特定するルールがあります。 54 00:02:56,860 --> 00:02:59,200 ここへ行くと、コードを見ることができます。 55 00:02:59,367 --> 00:03:03,050 元の定義を見ることや 56 00:03:03,217 --> 00:03:05,810 変換することができます。 57 00:03:08,180 --> 00:03:12,160 そして警告が消えます。 58 00:03:13,610 --> 00:03:15,400 ここで大切なことは 59 00:03:15,567 --> 00:03:17,920 全てのルールは経験則だということです。 60 00:03:18,087 --> 00:03:19,700 つまり、意図的にあまり良くないことを することもあります。 61 00:03:19,867 --> 00:03:22,840 システム中でわかった上で 62 00:03:23,007 --> 00:03:24,200 そうせざるを得ないこともあります。 63 00:03:24,367 --> 00:03:28,840 これは偽陽性(実際には問題ではない指摘) だと指定することもできます。 64 00:03:29,007 --> 00:03:33,660 ここに foofoo メッセージがありますが 65 00:03:33,827 --> 00:03:36,660 わかった上でそのままにしたいとします。 66 00:03:36,827 --> 00:03:40,240 すると、このルールはこのメソッドには 正しくないと指定することができます。 67 00:03:41,850 --> 00:03:44,850 そう指定します。 68 00:03:45,017 --> 00:03:46,510 ここでグレーになりました。 69 00:03:46,677 --> 00:03:49,690 これは後になって 70 00:03:49,857 --> 00:03:51,310 このルールの言う通りかもしれないということで 71 00:03:51,477 --> 00:03:53,490 後でまた見たほうがいい 72 00:03:57,250 --> 00:03:57,883 ということです。 73 00:03:58,410 --> 00:04:00,640 指摘を保存しておくことができます。 74 00:04:00,807 --> 00:04:04,910 つまりルールの結果や 75 00:04:05,077 --> 00:04:06,670 偽陽性といったものを保存します。 76 00:04:07,290 --> 00:04:08,850 もし偽陽性になるようなものを書いた時 77 00:04:09,017 --> 00:04:11,000 ルールを走らせるたびに何度も何度も 78 00:04:11,167 --> 00:04:12,680 ずっとシステムが繰り返し 指摘してほしくはありません。 79 00:04:13,400 --> 00:04:18,230 指摘を保存すると、クリティックブラウザは それらの指摘をマニフェストに入れます。 80 00:04:18,470 --> 00:04:21,690 見てみましょう。ここにマニフェストがあります。 81 00:04:21,857 --> 00:04:23,920 システムに関連つけられ バージョンが付けられています。 82 00:04:24,087 --> 00:04:26,410 内部的にどうなっているかを 見る必要はありません。 83 00:04:26,577 --> 00:04:29,400 マニフェストは色々なことをコード化しますが それはどうでもよいです。 84 00:04:29,700 --> 00:04:32,590 マニフェストに触らないでください。 コードクリティクスが次回実行される時に 85 00:04:32,757 --> 00:04:34,120 使われるものです。 86 00:04:34,287 --> 00:04:36,260 そしてマニフェストはパッケージごとにあります。 87 00:04:36,700 --> 00:04:38,100 コードにバージョンをつけると 88 00:04:38,267 --> 00:04:39,920 マニフェストにもバージョンをつけます。 89 00:04:40,087 --> 00:04:42,880 そしてコードクリティクスを再び走らせると 90 00:04:43,047 --> 00:04:44,890 自動的に偽陽性やメタコメントが 91 00:04:45,057 --> 00:04:47,040 取り入れられます。 92 00:04:47,207 --> 00:04:49,510 これらの品質ルールについて 本当に大切なことは 93 00:04:49,677 --> 00:04:53,390 Pharo はそれらのルールを 開発プロセスに統合しているという点です。 94 00:04:53,557 --> 00:04:56,010 プロジェクトを 95 00:04:56,177 --> 00:04:58,570 コミットするたびに 96 00:04:58,737 --> 00:05:01,170 Jenkins サーバーがそれをロードして 97 00:05:01,337 --> 00:05:04,000 それらの品質コードを自動的にチェックして 98 00:05:04,167 --> 00:05:05,920 プログラムが本当に品質ルールに 従っているかを確認します。