QVT transformations can be programmed with the QVT editor. Semantic validation by the QVT editor requires, that you defined appropriate metamodels in Preferences | QVT Metamodels . The QVT editor comprises many usability features:
Syntax highlighting for QVT and OCL
Syntactical and semantical errors are displayed in the Problems view. Note that for the semantic analysis, the last direction defined in the transformation signature is taken.
Code completion:
For OCL expressions. You can type "." or "->" after and OCL expression or press CTRL-SPACE in an OCL expression to get a list of insertable properties/operations or a list of variables/queries/relations which can be called/accessed at the given position.
Where types are expected (e.g. at a variable declaration), CTRL-SPACE opens a list of all available types.
For object templates , CTRL-SPACE offers a list of all available property template items which can be inserted.
For relations , CTRL-SPACE offers a list of relation domains proposals which can be inserted.
For the transformation itself, CTRL-SPACE offers a list of relation or query proposals which can e inserted.
Refactoring:
You can rename a query, relation or variable by pressing ALT+SHIFT+R with the text cursor being positioned on a name.
You can format QVT by pressing CTRL-SHIT-F. Note that only the closest region of the QVT script is formatted which comprises the current text cursor position. To format the whole document, place the text cursor on the "transformation" keyword.
Navigation: Clicking on a variable/relation call/operation call while pressing CTRL nagivates to the declaration of it.
Outline View: When there are no syntactical errors, the AST tree of the transformation is displayed in the Outline view. You can query useful information for an item of this tree depending on its type:
For a relation , you can query pseudo code which helps to understand what happens when the relation is executed. As execution direction, the last direction of the transformation signature is assumed.
For when or where conditions and for property template items and object templates , you can query on which variables they depend and which variables they themselves bind. The relevant pseudo code is also displayed.
For property template items you can query information on the referred property.