言語別開発ツールの棚卸し
目次
目的
開発スタイルについて思うところがあり見直したため、自分用のメモとして言語別の開発ツール群をまとめた。
自分の環境
$ cat /etc/debian_version stretch/sid $ uname -a Linux calc0 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
言語別の開発ツール群
エディタは"neovim"*1を用いており、補完・シンタックスチェック(syntastic*2)・タグジャンプ(+tagbar*3)などを用いていることを断っておきます。
また、開発はフレームワークを用いたものではなく、ライトなプログラム作製が主です。
言語 | C言語 | Python | Ruby | Haskell | Shell Script | Markdown |
---|---|---|---|---|---|---|
環境 | - | pyenv(anyenv*4) | rbenv(anyenv) | stack*5 | - | - |
パッケージ管理 | - | pip(requirements.txt) | gem | Cabal | - | - |
Lint・スタイルチェック | gcc | flake8(pyflakes+pep8)+Pylint | rubymotion+rubocop | Hlint+scan*6+hdevtools*7 | ShellCheck*8 | mdl*9 |
ドキュメンテーション | Doxygen*10 | Sphinx(docstring) | Yard | haddock | (Doxygen*11) | - |
テスト-ドキュメント例示 | (assert.h) | doctest | p0deje/yard-doctest(minitest-doctest) | docktest | - | - |
テスト-実装 | CUnit | unittest | Rspec | Hspec | (shUnit) | - |
テストライナー | Make | Sphinx+watchdog | Guard | Cabal | - | - |
デバッグ | gcc -g -C0 -Wall test.c && gdb a.out |
pdb test.py |
ruby -rdebug test.rb |
ghci test.hs (:step、:list) |
bash -x test.sh 、コード内に trap 'read 〜' DEBUG *12 |
- |
タグ | ctags | ctags | ctags | hasktags*13 | ctags | ctags(markdown2ctags*14) |
Travis CI | autotools+Make | unittest | Rspec | Cabal | - | - |
Code Climate:カバレッジ率計測 | - | o | o | o | - | - |
heroku デプロイ | - | o | o | - | - |
【2017/02/22 追記】デバックについて追記を行いました。
ソースコードのコメントからのドキュメント生成については、"Javadoc" ライクなものが好みだったため、それが反映されています。
参考にしたサイト
自分の開発スタイルが学生時代から変わらず「vimでPHP書いてCGI」みたいなレベルだったので、TDDのバイブルを読んだり、下記のサイトなどに触発されつつ、開発スタイルについて改めました。
書籍:テスト駆動開発入門
著者:ケント ベック
所感
言語別に網羅的に見ることによって、何ができていないかをチェックすることができましたし、記憶の棚卸しができました。
言語選択・開発スタイル・使用ツールについては様々な選択肢・組み合わせがありますが、その組み合わせ考案の一助になればと思います
*2:https://github.com/vim-syntastic/syntastic
*3:https://github.com/majutsushi/tagbar
*4:https://github.com/riywo/anyenv
*5:https://docs.haskellstack.org/en/stable/README/
*6:https://hackage.haskell.org/package/scan
*7:https://hackage.haskell.org/package/hdevtools
*8:https://www.shellcheck.net/
*9:https://github.com/mivok/markdownlint
*11:https://rickfoosusa.blogspot.jp/2011/08/howto-have-doxygen-support-bash-script.html