heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

言語別開発ツールの棚卸し

HaskellLogoStyPreview-1.png

Pic.1 Haskell Logo

目次

目的

開発スタイルについて思うところがあり見直したため、自分用のメモとして言語別の開発ツール群をまとめた。

自分の環境

$ 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)などを用いていることを断っておきます。

また、開発はフレームワークを用いたものではなく、ライトなプログラム作製が主です。

Table.1 言語別の開発ツール群

言語 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" ライクなものが好みだったため、それが反映されています。

参考にしたサイト

自分の開発スタイルが学生時代から変わらず「vimPHP書いてCGI」みたいなレベルだったので、TDDのバイブルを読んだり、下記のサイトなどに触発されつつ、開発スタイルについて改めました。


書籍:テスト駆動開発入門
著者:ケント ベック

所感

言語別に網羅的に見ることによって、何ができていないかをチェックすることができましたし、記憶の棚卸しができました。

言語選択・開発スタイル・使用ツールについては様々な選択肢・組み合わせがありますが、その組み合わせ考案の一助になればと思います