Shiraji's Blog

How to Kontribute (for Japanese)

This entry is for Japanese. For English speaker, please refer kotlin repo

最初に

kotlinにcontributeし始めました。ドキュメントに書いてない部分があったので、主に自分用になりますが、書いておきます。

この文章は2016/07に書かれたので、その後、contribute方法が変わっているかもしれません。

contributeする前にREADMEは必ず読み込んでください。

開発環境

JDK周り

特に、JDKの設定は複雑です。jdk1.6, 1.7, 1.8全てが必要で、それらをドキュメント通り指定します。

1
JDK_17=`/usr/libexec/java_home -v 1.7`

こんな感じで設定していきました。

Windows user

自分はWindowsでの開発をしていないのですが、Windowsで開発する場合、JDKはOracleさんが出しているものが良いようです。

Macであれば、OpenJDKでもOrableのやつでもどちらでも問題なくビルドできるそうです。

build

pullには結構時間かかります。buildコマンドはドキュメントにある通り、

1
2
ant -f update_dependencies.xml
ant -f build.xml

kotlin開発用プラグインのインストールも必要です。

全てが揃わない限り、ビルド出来ません。このあたりで断念するのはもったいないので、わからなければ、slackのkotlinlangのkontributorチャンネルで聞いてください。

kotlinlangのslackはhttps://kotlinlang.org/community.html%E3%81%93%E3%81%93%E3%81%AB%E8%A9%B3%E7%B4%B0%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82

ANTの設定

よくハマるのが、antの設定です。Heapサイズを増やさないとビルド出来ないことが多々発生します。

以下のようにANT_OPTSを設定して下さい。Xmxの数値は任意。

1
export ANT_OPTS="-Xmx2048m -XX:MaxPermSize=2048m"

run

.idea/runConfigurationを見てもらうとわかるのですが、かなり多くのrun設定が含まれています。

ビルドが成功すれば、それらをrunするだけで、動きます。IDEAをrunすると自分の修正を取り込んだIntellijが立ち上がります。

run test

UnitテストもIDEAなどと同じでrun設定から起動します。

一つ一つのテストを起動することも出来ますが、working directoryがプロジェクトrootを指定しない限り動かないので注意。All IDEA Plugin Testsの設定を参考にしてください。

Plugin “GitHub” was not loaded: required plugin “Git4Idea” not installed.

ideaSDK/config-ideaの中身を全て消せばいいらしい。

でもそれで動くマシンと動かないマシンがあった。これに関しては謎。動かないマシンはもう一回環境構築しなおしてみます。

追記

理由がわかりました。テスト時にSDKに設定されているプラグインを全て読み込みます。

File > Project Structure > 1.8 > Classpath

私の場合、ここに、CE版のgithubプラグインのパスが設定されていました。これを削除すると動くようになりました。

別プラグイン開発で使っていたものが残っていました。

開発

READMEにもありますが、kotlinにはまだまだいっぱいやることがあるので、contributeし放題です。

YouTrackからやりたいものを選んで下さい。

そのスレッドにやるわこれ!とコメントすると良いです。やっていいのかわからない場合は、kontributorチャンネルでやっていいか?という質問を投げて下さい。JetBrainsの営業時間になればだいたい回答が来ます。

ブランチ名

特にルールないらしい。なんでも良い。masterはさすがにマナー違反だと思う。

コミットメッセージ

あんまりルールがあるように見えない。#KT-12345 Fixedはつけたほうが良さ気。

テスト

基本書いたコードに対して考えられるケースのテストを書くことになる。XxxTestGeneratedという名前のクラスはRun ConfigurationのGenerate Testsで自動生成されたテストケース。これらのテストケースは編集しない。

例えば、Inspectionのテストの場合、InspectionTestGeneratedがあり、これにテストを追加するにはidea/testData/inspections配下にフォルダを作成し、その下にテストデータを作成する。その後、"Generate Tests"を起動させると、テストケースが追加される。

新規のUnit Test

新規のUnit Testを書くことになるIssueもある。

その場合、通常通り、JUnitでテストを作成してもいいのだけど、KotlinCodeInsightTestCaseを継承した、abstract classを作成し、GenerateTests.ktに追記すると、上記"Generate Tests"の対象となり、abstractクラスで作ったロジックに則った自動テストを作成することが出来る。

例えば、このPRではAbstractConcatenatedStringGeneratorTestを作成して、ConcatenatedStringGeneratorクラスをテストする自動テストケースを作成している。

Pull Request

特に気にせず投げてOK。

投げた後に、そのURLを対象のYouTrackのissueのコメントに貼り付けて欲しいとのこと。

マージ

マージはcherry-pick?でマージ先をJetBrainsの中の人がやってくれる。微修正までしてくれる。Authorは自分になる。(CommiterがJBの中の人。)

こんな感じ。

https://github.com/JetBrains/kotlin/commits?author=shiraji

ビルド出来なくなったら?

kotlinプラグインは結構な頻度で更新されていきます。

急にビルド出来なくなった場合、まず、kotlinプラグインを最新のバージョンにしているのか確認して下さい。

また、masterにマージされているものが時々ビルドエラーを起こしたりします。こうなるとその修正が入るまで特に何も出来ません。我慢して待ちましょう!

ただ、2~3日ビルド出来ないというのは何かしら環境がおかしい場合があります。その時は以下の作業をしてみます。

  • ideaSDK/config-idea以下を削除する(Run時に使うプラグインを削除)
  • ant -f update_dependencies.xmlを実行する
  • ant distを実行する

それでもだめならkontributorチャンネルで聞いてみましょう。

雑感

殺伐としておらず、やりたい!と手をあげたらやらせてくれる。ちょっとわかんね。となっても質問すれば教えてくれる。

kontributorチャンネルで聞けばだいたい問題は解決する。やってほしいIssueとかも聞けば答えてくれる。非常にやりやすい感じでした。

IDE周りは今まで結構コード書いてたり読んでたりしているので、引き続きcontributeしていこうかなと考えています。