プログラミングでコンパイルを開始する

継続的インテグレーションシステムでは、コードが送信されるたびに、あるいは毎時ごとに、ソースコードのコンパイルが自動的に開始されます。これにより、コード管理サーバー上でマージを確認することができます。

4D v19 では、新コマンドを使ってコードのコンパイルを起動できるようになったため、このタイプのシステムを設定することができます。

HDI: プロジェクトをコマンドでコンパイル

継続的インテグレーションとは?

継続的インテグレーションとは、ソースコードが変更されるたびに、その変更が開発されたアプリケーションにリグレッション (後退) をもたらさないことを確認することです。主な目的は、できるだけ早い開発の段階で統合の問題を検出することです。

新しいコマンド

新コマンド Compile Project で以下のプロジェクトがコンパイルができるようになりました:

  • カレントプロジェクト
  • カレントでないプロジェクト

 

コンパイルに成功した場合、このコマンドは successプロパティを持つ statusオブジェクトを返します。そうでなければ、エラーのリストを含む statusオブジェクトを返します。

カレントプロジェクトをコンパイルする

デフォルトの設定でカレントプロジェクトをコンパイルする方法は、非常に簡単です:

var $status : Object
$status:=Compile project()

コンパイルオプションをオーバーライドするには、指定したい値を持つオブジェクトを渡します。以下は、オーバーライドできるオプションです:

  • コンパイルターゲット
  • 型推論
  • 数値やボタンのデフォルトの型
  • シンボルの生成
  • 型宣言メソッドの生成
  • コンパイルに使用するコンポーネント

 

たとえば、ソースコントロールサーバー上でコードが送信されるたびに、マージされたコードを検証するための簡単なシンタックスチェックを起動することができます。

var $options; $status : Object
$options:=New object()
$options.targets:=New collection()
$status:=Compile project($options)

 

アプリケーションでコンポーネントを使用している場合は、コンパイル済みコンポーネントのリストを optionsオブジェクトで渡す必要があります。

var $options; $status : Object
var $component : 4D.File
$options:=New object()
$options.components:=Folder("/PACKAGE/Components").files(fk recursive).query("extension = .4dz")
$status:=Compile project($options

別のプロジェクトをコンパイルする

別のプロジェクトからアプリケーションをコンパイルすることができます。コマンドにプロジェクトファイルを渡すだけです。

var $file : 4D.File
$file:=Folder(fk documents folder).file("Databases/myApp/Project/myApp.4DProject")
$status:=Compile project($file)

コンパイルエラーの管理

この新コマンドは、コンパイルが成功したかどうかを示す statusオブジェクトを返します。コンパイルに失敗した場合、4D はエラーメッセージのコレクション、関連するメソッド、そしてエラーの行番号を返します。

そして、METHOD OPEN PATHコマンドの新しいパラメーターのおかげで、コードエディターでメソッドを開き、エラー行にカーソルを置くことができます。

たとえば、エラーのコレクションをリストボックスに表示し、リストで選択されたエラーのメソッドを開くボタンを追加することが可能です:

METHOD OPEN PATH(Form.selected.code.path;Form.selected.line)

ご期待ください、継続的インテグレーションに関するブログはまだまだ続きます!

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。