| <!DOCTYPE html> |
| <head> |
| <title>RCPTT Documentation Center</title> |
| <meta charset="UTF-8"> |
| <link rel="stylesheet" href="/shared/css/bootstrap.min.css"> |
| <link rel="stylesheet" href="/shared/css/main.css"> |
| <link rel="stylesheet" href="/shared/css/prism.css"> |
| <link rel="icon" href="/shared/img/favicon.ico"> |
| <script src="/shared/js/jquery.min.js"></script> |
| <script src="/shared/js/bootstrap.min.js"></script> |
| <script src="/shared/js/prism.js"></script> |
| <script src="/shared/js/ecl.js"></script> |
| <script> |
| (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
| (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
| m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
| })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); |
| |
| ga('create', 'UA-39589807-5', 'eclipse.org'); |
| ga('send', 'pageview'); |
| </script> |
| </head> |
| <body> |
| <div id="before-footer"> |
| <header> |
| <nav class="navbar navbar-default navbar-static-top" role="navigation"> |
| <div class="container"> |
| |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <span class="navbar-brand">RCPTT Documentation Center</span> |
| </div> |
| <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> |
| <ul class="nav navbar-nav"> |
| <li class="active" > |
| <a href="/documentation/userguide/getstarted">User Guide</a> |
| </li> |
| <li > |
| <a href="/documentation/faq/">FAQ</a> |
| </li> |
| <li> |
| <a href="http://eclipse.org/rcptt">Back to RCPTT Main Site</a> |
| </li> |
| <li> |
| <a href="http://eclipse.org">Eclipse.org</a> |
| </li> |
| </ul> |
| </div> |
| </nav> |
| </header> |
| <section class="content"> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-sm-3"> |
| <div class="rcptt-sidebar"> |
| <ul class="nav"> |
| <li ><a href="/documentation/userguide/getstarted/">Get Started</a> |
| </li> |
| <li ><a href="/documentation/userguide/testeditor/">Test Case Editor</a> |
| </li> |
| <li ><a href="/documentation/userguide/controlpanel">Control Panel</a> |
| </li> |
| <li ><a href="/documentation/userguide/assertions/">Assertions</a> |
| </li> |
| <li class="active" ><a href="/documentation/userguide/ecl/">Eclipse Command Language</a> |
| <ul class="nav"> |
| <li > |
| <a href="/documentation/userguide/ecl/new-command-guide/">New ECL Command Guide</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/ecl/excel-import-export/">ECL commands for Excel import and export</a> |
| </li> |
| </ul> |
| </li> |
| <li ><a href="/documentation/userguide/contexts/">Contexts</a> |
| <ul class="nav"> |
| <li > |
| <a href="/documentation/userguide/contexts/workspace/">Workspace</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/workbench/">Workbench</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/launch/">Launch</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/preferences/">Preferences</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/parameters/">Parameters</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/group/">Group</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/folder/">Folder</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/default/">Default</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/super/">Super</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/contexts/ecl/">ECL Script</a> |
| </li> |
| </ul> |
| </li> |
| <li ><a href="/documentation/userguide/verifications/">Verifications</a> |
| <ul class="nav"> |
| <li > |
| <a href="/documentation/userguide/verifications/text/">Text</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/verifications/treetable/">Table/Tree</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/verifications/errorlog/">Error Log</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/verifications/time/">Time</a> |
| </li> |
| </ul> |
| </li> |
| <li ><a href="/documentation/userguide/procedures/">Procedures and Variables</a> |
| </li> |
| <li ><a href="/documentation/userguide/runner/">Test Runner</a> |
| <ul class="nav"> |
| <li > |
| <a href="/documentation/userguide/runner/arguments/">Arguments</a> |
| </li> |
| </ul> |
| </li> |
| <li ><a href="/documentation/userguide/maven/">Maven plugin</a> |
| </li> |
| <li ><a href="/documentation/userguide/rap/">RAP</a> |
| <ul class="nav"> |
| <li > |
| <a href="/documentation/userguide/rap/install/">Install instructions</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/rap/recordReplay/">Record and Replay</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/rap/capability/">Capability Contexts</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/rap/rap-commands/">ECL commands</a> |
| </li> |
| <li > |
| <a href="/documentation/userguide/rap/rap-maven/">Maven plugin</a> |
| </li> |
| </ul> |
| </li> |
| <li ><a href="/documentation/userguide/integration/test-rail-integration/">Integration with TestRail</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="col-sm-9"> |
| <h1>Eclipse Command Language</h1> |
| <p></p> |
| |
| <p>ECL stands for Eclipse Command Language, and it was developed and initially introduced by Xored at EclipseCon '08 in California. |
| ECL has its own story. It goes back to the early history of Eclipse Platform which had always experienced a lack of Scripting and |
| Automation solutions. This problem is not related to a particular programming |
| (scripting) language but goes way further including an object model to script against it, data and code interoperability, and many more.</p> |
| |
| <p>There were several projects trying to add easy scripting and automation to the platform; the most successful one was Eclipse Monkey |
| (it was pretty dead before adopted widely). Monkey was using JavaScript as a scripting language and provided the object model (DOM) |
| as a part of the project, which covered high level aspects of Eclipse APIs. However, we were not satisfied with Monkey's approach |
| either, including JavaScript used by this project.</p> |
| |
| <p>What we did want from a Scripting-and-Automation solution is the following:</p> |
| |
| <ul> |
| |
| <li>The scripting language should be CLI-oriented, which means an end user (software engineers, testers, etc.) |
| must be able to do virtually anything with Eclipse from a console window, for example, the same way as with the Unix shell. |
| Here is a simple but actual ECL sample: |
| <br><br> |
| <div class="panel panel-default"> |
| <div class="panel-body"> |
| ecl-shell> create-project MyJavaProject -kind Java |
| </div> |
| </div> |
| |
| </li> |
| <li> |
| |
| The scripting solution should be expressive. Our goal is to save time for software engineers and/or users, |
| allowing to perform tasks faster then they would do with Java or JavaScript, or even using Eclipse UI. |
| Please review the following code: |
| <br><br> |
| <div class="panel panel-default"> |
| <div class="panel-body"> |
| <div class="screenshot"> |
| <img src="/shared/img/screenshot-ecl-1.png"></img> |
| </div> |
| </div> |
| </div> |
| |
| Try to put the same code in Java using Eclipse APIs and it'll become several lines instead of a couple.<br><br> |
| </li> |
| |
| <li> |
| |
| The scripting solution must be a general purpose instrument. |
| End users should be able to do virtually anything with their Eclipse environment using such a solution/language. As an example:<br><br> |
| |
| <div class="panel panel-default"> |
| <div class="panel-body"> |
| <div class="screenshot"> |
| <img src="/shared/img/screenshot-ecl-2.png"></img> |
| </div> |
| </div> |
| </div> |
| </li> |
| |
| <li> |
| |
| The scripting language should be extendable and let different adopters develop their own commands, which will be interoperable with other commands (such as Unix commands, for example). |
| Moreover, these commands and internal data structures should be also interoperable with Eclipse Frameworks. |
| |
| </li> |
| </ul> |
| |
| <div class="panel panel-info"> |
| <div class="panel-heading"> |
| Important |
| </div> |
| <div class="panel-body"> |
| To see the full list of ECL commands with their usage examples, please take a look at generated documentation <a href="https://hudson.eclipse.org/rcptt/job/rcptt-all/ws/releng/doc/target/doc/ecl/index.html">here</a>. |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </section> |
| <script src="/shared/js/main.js"></script> |
| </body> |