4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作エディタをつくるAdvent Calendar 2016

Day 21

コンソールで動くエディタを作る(21日目) テスト・バグフィックス

Posted at

本稿は自作エディタをつくる Advent Calendar 2016の21日目です、レポジトリはこちら

プルリクエストをもらう

equal-l2氏から2件プルリクエストをもらいました٩(๑❛ᴗ❛๑)۶
自分がこまめにpushしていなかったせいでconflictして申し訳ない(しかも直してもらった。。。)

1件目はmakefileに関するもので、暗黙変数を使うようにするものです。

16日目にmakefileを書き間違えてgcc(指定したつもりが、設定ミス)ではなくcc(デフォルト)でコンパイルされていました。
そういうデフォルトルールがいくつかあるらしく(参考)
デフォルトルールを使うようにしたらmakeする人の環境に合わせてビルドできるよ、
っていうプルリクエストでした。

C言語でもCPPFLAGSを指定するのが不思議ですが、
調べた感じ、普通はそうするようです。
C++だとCXXFLAGSみたいなので、歴史的経緯とかでしょうか?

あわせて、makefileのちょっとしたリファクタリングをしました。

2件目はスペルミスの修正です。

単純にスペルが間違ってるもののほかに、
lines_calculatotion_widthlines_calculate_widthのように動詞と名詞が違うものと、
ARROW(矢印キー)はutf8として正しくないがALLOWしているネーミングセンスのわかりにくいさの修正がありました。
自分でもわかりにくいと思ってARROW_KEYにリネームしていたのでconflictしてしまいました。

テストを充実させる

自分の中ではMVCでいうとMのコードにテストを増やしていきました。

備考:自分の中の基準

  • M -> typeフォルダ
  • V -> renderフォルダ
  • C -> commandフォルダ

なので、typeフォルダのコードにテストをつけました。
条件分岐を網羅してないですが、該当フォルダには全メソッドテストがつきました。
基本的にテストしたい関数を呼んでprintfするだけなので、お手軽なのが良いですね。

テストを増やしたので、バグを2つみつけました。
1つめは、asciiコードだと上手くいっていたがutf8だと上手くいかないところで、
2つめは、free先がファイル先端・末尾を超えている時にセグフォでした。
テストがあったらあったで色々わかっていいですね。
せっかくなので、変数名のリネームもしまくります。

あと、モンキーテストで見つけたバグもいくつか直しました。

include を整理する

いままで適当にincludeしていたheaderを整理しました
あわせて、clang-formatのSortIncludesをtrueにしました

今日のまとめ

  • テストが充実しました
  • bugをいくつか修正しました
  • includeを整理しました

知人のrubyエンジニアにiOSアプリの作り方を休みに教えていた、
っていう更新が遅れた言い訳でした。
最初はswiftどうこうよりもXcodeが難しい気がしますね。

19日目のコメントの静的解析ツールが気になります、valgrindも動かしたいけど。
残り日数も少ないですが、目標としては25日目のブログまでに検索とコピーペーストをつけたい!

4
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?