Jump to: navigation, search

Difference between revisions of "JSDT/Development"

(JSDT Sources)
(Target Platform, API Baseline and Other Preferences)
 
(73 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{JSDT}}
 
{{JSDT}}
  
As of WTP 3.0, JSDT is part of the Web Tools Platform.
+
''JSDT'' is a subproject of ''WTP'' providing JavaScript editing features based on ''JDT''; other editors based on ''SSE''; Nodejs and JS debugging support based on ''ChromeDevTools'' and much more. Check the project pages below and see ''Developer Resources'' to get the list of Source repositories:
 +
 
 +
* [https://projects.eclipse.org/projects/webtools.jsdt JSDT]: ''JavaScript Development Tools''
 +
* [https://projects.eclipse.org/projects/webtools WTP]: ''WebTools Platform'', parent project since WTP3.0
 +
* [https://projects.eclipse.org/projects/webtools.sourceediting SSE]: ''Structured Source Editing'', for editors like XML, CSS, JSON
 +
* [https://projects.eclipse.org/projects/eclipse.jdt JDT]: ''Java Development Tools'', extended by the JavaScript Editor
  
 
== Contributing to JSDT ==
 
== Contributing to JSDT ==
The JSDT is driven by a very small development group with limited resources. ANY serious developers or contributors will be enthusiastically welcomed. For more information on how to become a Committer, check the standard Eclipse process (see [http://www.eclipse.org/projects/dev_process/new-committer.php New Committer Election]).  For more information about contributing to JSDT in general, or for questions about its internals, contact [mailto:wtp-dev@eclipse.org?subject=JSDT wtp-dev].
+
The JSDT is driven by a small and dedicated development team with limited resources. ANY serious developers or contributors will be enthusiastically welcomed. For more information on how to become a Committer, read how we [http://www.eclipse.org/projects/dev_process/new-committer.php nominate and elect new committers] according the standard Eclipse process.  
  
 +
To contribute to JSDT you can report bugs, resolve bugs and write documents or create media contents to spread your knowledge.
  
=== JSDT Functional Testing ===
+
=== Getting in touch with the Community ===
[[JSDTestScenarios | Testing Scenarios ]]
+
For more ''information about contributing'' to JSDT or for ''questions about its internals'' you have few options:
 +
* contact [mailto:wtp-dev@eclipse.org wtp-dev@eclipse.org] after you subscribed to the [https://dev.eclipse.org/mailman/listinfo/wtp-dev wtp-dev mailing list].
 +
* chat via [https://wiki.eclipse.org/IRC_FAQ#What_are_.23eclipse_and_.23eclipse-dev_about.3F IRC] on the #eclipse or #eclipse-dev channel
 +
* get in touch on the [https://mattermost-test.eclipse.org/eclipse/channels/webtools Eclipse mattermost webtools channel]
 +
* ask the [https://www.eclipse.org/forums/index.php/f/88/ WebTools Project forum]
 +
* check the [https://wiki.eclipse.org/JSDT/Confcalls JSDT Confcalls]
  
=== Reporting Bugs ===
+
=== Bugzilla for JSDT Bugs ===
Report bugs through [http://bugs.eclipse.org/bugs/ Eclipse Bugzilla] under WebTools catagory, JSDT component.
+
You can [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JSDT Report a JSDT bug] through [http://bugs.eclipse.org/bugs/ Eclipse Bugzilla] choosing WebTools category, JSDT component.
  
 
Here is a [https://bugs.eclipse.org/bugs/buglist.cgi?list_id=3212991&resolution=---&classification=WebTools&query_format=advanced&product=JSDT list of open JSDT bugs]. We're working through them as fast as we can!
 
Here is a [https://bugs.eclipse.org/bugs/buglist.cgi?list_id=3212991&resolution=---&classification=WebTools&query_format=advanced&product=JSDT list of open JSDT bugs]. We're working through them as fast as we can!
  
=== JSDT Sources ===
+
Don't forget to subscribe to Bugzilla notifications for JSDT. Here is an "how-to" reminder:
 +
* Go to https://bugs.eclipse.org/bugs/userprefs.cgi?tab=email
 +
* Add  jsdt.web-inbox@eclipse.org to the watch list, at the end of the page.
  
Git Repositories:
+
=== Contribute Code ===
  
*[http://git.eclipse.org/c/jsdt/webtools.jsdt.core.git/ webtools.jsdt.core.git] [https://github.com/eclipse/webtools.jsdt.core GitHub]  
+
As Contributor, you can fix JSDT bugs and send code contributions via Gerrit:
*[http://git.eclipse.org/c/jsdt/webtools.jsdt.debug.git/ webtools.jsdt.debug.git] [https://github.com/eclipse/webtools.jsdt.debug GitHub]
+
* To start you need to sign the [https://eclipse.org/legal/CLA.php CLA] and to [setup the development environment]
*[http://git.eclipse.org/c/jsdt/webtools.jsdt.tests.git/ webtools.jsdt.tests.git] [https://github.com/eclipse/webtools.jsdt.tests GitHub]
+
* Then pick an [https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&list_id=13964165&product=JSDT open JSDT Bug], if not assigned to any team member, assign it to yourself.  
 +
* Solve the bug and test the solution, so you can commit and push your change with Gerrit.
 +
* Now wait for a committer who has to review and approve (+1) before your changes are committed.
  
Detailed repository contents you can find at this page: http://wiki.eclipse.org/WTP_Git_Migration_Checklist
+
Below you can read how to setup the development environment, get the source code, edit the source, run the application, perform tests, and commit the changes via Gerrit.
  
These plug-ins have no dependencies other than the Eclipse base (nor do they depend on anything else in WTP).  Using these plug-ins, a standalone JavaScript Project can be created and used:
+
== Setup the Development Environment ==
* webtools.jsdt.core.git/bundles/org.eclipse.wst.jsdt.core
+
* webtools.jsdt.core.git/bundles/org.eclipse.wst.jsdt.manipulation
+
* webtools.jsdt.core.git/bundles/org.eclipse.wst.jsdt.ui
+
  
The Feature project for these is:
+
To setup the development environment you can either use a Full Stack ''Eclipse IDE loaded with the Target Platform Plug-ins'', or use an ''Eclipse IDE'' for coding and keep a separate installation as a ''Target Platform''.  
* webtools.jsdt.core.git/features/org.eclipse.wst.jsdt.feature
+
  
=== HTML an JSP editors ===
+
Separating your development IDE from Target Platform makes your IDE lighter, more stable when adding development plug-ins and more flexible for development against different versions.
  
JSDT provides JavaScript support for the WTP HTML and JSP editors in the WTP Source Editing project [http://git.eclipse.org/c/sourceediting/ Git repositories]. [https://github.com/eclipse/webtools.sourceediting GitHub]
+
If you're new to this setup, watch once this video to see a full setup for JSDT development environment: https://www.youtube.com/watch?v=SFxfuudlau8 (for Mars.1).
 +
 
 +
=== Eclipse IDE + Target Platform aside ===
 +
 
 +
Download recent builds of Eclipse IDE and Target Platform from the eclipse download page: https://www.eclipse.org/downloads/
 +
 
 +
As an example, for Mars.2, you need to download:
 +
* Eclipse IDE (dev tools) : [https://www.eclipse.org/downloads/packages/eclipse-rcp-and-rap-developers/mars2 for RCP and RAP developers]
 +
* Eclipse TP (target) : [https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2 for Java EE developers]
 +
 
 +
After the downloads, unzip both installations. Launch the IDE, and remember you should never launch or update the Target Platform.
 +
 
 +
=== Target Platform, API Baseline and Other Preferences ===
 +
 
 +
For the development you'll need to edit '''Preferences''', and set the Target Platform, API Baselines and other recommended values.
 +
 
 +
[[File:Set-downloaded-instalaltion-as-target-platform.png|650px]]
 +
 
 +
To set the ''Target Platform'' and the ''API Baseline'' open '''Windows > Preferences''' from menu and then select:
 +
* '''Plug-in Development''' > ''' API Baseline''' Click "Add Baseline" and point to the Target Platform installation
 +
* '''Plug-in Development''' > '''Target Platform''' Click "Add.." and point to the Target Platform installation.
 +
 
 +
To set the other recommended preferences in line with the [[Platform_UI/How_to_Contribute]] guidelines open '''Windows > Preferences''' from menu and then select:
 +
* '''Preferences > General > Workspace''', set text file delimiters to Unix line delimiters
 +
* '''Preferences > Java  > Editor > Save Actions''', enable the “Perform the selected actions ..” and set:
 +
** '''Format Source Code > Format Edited Lines''': to avoid formatting the whole file, but limit the changes to edited lines.
 +
** '''Additional Actions > Remove Trailing Whitespaces''': to avoid adding trailing whitespaces
 +
* '''Preferences > Java  > Installed JREs''' add the needed JREs. Usually I add Java8, 7 and 6.
 +
 
 +
=== Get the Source Code ===
 +
 
 +
''Note'': If you already have local Git repositories with JSDT projects, you can switch to Git perspective, and import them in the Git Repository View, via the "Add an existing local repository" Link. So doing, the download of projects from the project set will re-use those imported repositories, instead of doing a full download.
 +
 
 +
==== JSDT Source Repositories ====
 +
 
 +
To edit JSDT code, you will need to fetch code from four project repositories. Below you can see the Gerrit URLs.
 +
<pre>
 +
https://git.eclipse.org/r/p/jsdt/webtools.jsdt
 +
https://git.eclipse.org/r/p/sourceediting/webtools.sourceediting
 +
http://git.eclipse.org/gitroot/www.eclipse.org/webtools.git
 +
https://git.eclipse.org/r/platform/eclipse.platform.runtime
 +
</pre>
 +
 
 +
If you already provided Eclipse your [https://git.eclipse.org/r/#/settings/http-password Gerrit https password], you can clone and setup quickly by prepending your username to the URL as  <code>https://<YOUR-USERNAME>@git.eclipse.org/...</code>.
 +
 
 +
==== JSDT ProjectSet  ====
 +
 
 +
The JSDT ProjectSet defines all the project needed to develop on JSDT, along with the needed repositories.
 +
 
 +
[http://www.asegno.com/wp-content/uploads/2016/02/wst.jsdt_.allProjects_20160209.psf wst.jsdt_.allProjects_20160209.psf]
 +
 
 +
Then import all projects via:
 +
 
 +
* '''Import > Team > Team Project Set''' and choose the project set file
 +
 
 +
[[File:Import-jsdt-project-set.png|500px]]
 +
 
 +
'''Please Note''': Sometimes the ProjectSet could be not in sync with latest developments. If so, you can fix by adding missing projects, and looking in the \bundles\ folder of JSDT repositories.
 +
 
 +
==== JSDT Git Sources ====
 +
 
 +
* Git Repositories: http://git.eclipse.org/c/jsdt/webtools.jsdt.git/ webtools.jsdt.git
 +
* Developer resources https://projects.eclipse.org/projects/webtools.jsdt/developer
 +
* Detailed repository contents: http://wiki.eclipse.org/WTP_Git_Migration_Checklist
 +
 
 +
== Testing ==
 +
 
 +
Here you can find information on JSDT testing by launching an inner eclipse, by building and testing locally and about functional testing scenarios.
 +
 
 +
=== Launch the Target Platform from IDE ===
 +
 
 +
Launching an inner eclipse with target platform plugins onboard, added by the plugins of which you are editing the source code:
 +
* Create a new launch configuration, based on plugins contained in the target platform
 +
* Then Run the launch configuration. You will see a new Inner Eclipse popping up.
 +
* If needed you can debug this Eclipse instance you’re going to develop against.
 +
 
 +
You can check the [https://youtu.be/SFxfuudlau8?t=9m44s video starting 9'44"] to see how to choose plug-ins and run the application.
 +
 
 +
=== Building and testing JSDT locally ===
 +
 
 +
Simply run <tt>mvn clean verify -Pbuild-individual-bundles -DskipTests=false</tt>. This command will run the Unit-tests. After the build, you can install your JSDT snapshot in an Eclipse IDE or other RCP application using the p2 repository in location <tt>site/target/repository</tt>
 +
 
 +
=== JSDT Functional Testing ===
 +
[[JSDTestScenarios | Testing Scenarios ]]
  
The following plug-in projects provide JSDT integration with WTP's HTML and JSP editors:
+
== Gerrit Reviews ==
* webtools.sourceediting.git/bundles/org.eclipse.wst.jsdt.web.core
+
* webtools.sourceediting.git/bundles/plugins/org.eclipse.wst.jsdt.web.ui
+
* webtools.sourceediting.git/bundles/plugins/org.eclipse.wst.jsdt.web.support.jsp - contains JSP-specific functionality
+
* webtools.sourceediting.git/bundles/plugins/org.eclipse.wst.jsdt.support.firefox - contains bindings for Mozilla FireFox, current as of FF 2.0.x (deprecated)
+
* webtools.sourceediting.git/bundles/plugins/org.eclipse.wst.jsdt.support.ie - contains bindings for Microsoft Internet explorer (deprecated)
+
  
=== JSDT tests ===
+
==== Pushing a new patch for review ====
  
The following are the JUnits test plug-ins for JSDT:
+
You can use [[Gerrit]] (mandatory reading, important to set up hooks, SSH keys, CLA & other) to push Git commits on JSDT repositories. The repo URL for JSDT@Gerrit is <tt>ssh://user@git.eclipse.org:29418/jsdt/webtools.jsdt</tt>. Once logged into Gerrit, you can see more details about the URL at https://git.eclipse.org/r/#/admin/projects/jsdt/webtools.jsdt .
* webtools.jsdt.tests.git/tests/org.eclipse.wst.jsdt.core.tests.compiler  - (test suite is org.eclipse.wst.jsdt.core.tests.compiler.JSDTTestAll)
+
* webtools.jsdt.tests.git/tests/org.eclipse.wst.jsdt.core.tests.model - (test suite is org.eclipse.wst.jsdt.core.tests.model.AllJavaModelTests)
+
  
These test plug-ins are new to WTP 3.1 and above:
+
Assuming you named this repo ''gerrit'', you can push a commit to one of this repository with
* webtools.sourceediting.tests.git/tests/org.eclipse.wst.jsdt.web.core.tests  - (test suite is org.eclipse.wst.jsdt.web.core.tests.translation.AllWebCoreTests)
+
<source lang="bash">
* webtools.sourceediting.tests.git/tests/org.eclipse.wst.jsdt.web.ui.tests - (test suite is org.eclipse.wst.jsdt.web.ui.tests.AllWebUITests)
+
$ git push gerrit HEAD:refs/for/master
 +
</source>
 +
This will give you the URL of the Gerrit review where you can interact with project committers to get your commit merged.
  
These test plug-ins are new to WTP 3.2 and above:
+
In case you need to push another version of the patch, don't forget to copy the <tt>Change-Id</tt> from the Gerrit review if you didn't set up the git hook. Providing another version of the patch doesn't require a new commit, simply amend the one you already pushed, and push it again:
* webtools.jsdt.tests.git/tests/org.eclipse.wst.jsdt.ui.tests  - (test suite is org.eclipse.wst.jsdt.ui.tests.JSDTUITests)
+
<source lang="bash">
 +
$ git log -1 #Shows the commit. Message should contain Sign-Off-By and Change-Id
 +
$ git add file/to/change
 +
$ git commit --amend # add --signoff if Sign-Off-By is missing, and copy Change-Id from Gerrit review if missing
 +
$ git push gerrit HEAD:refs/for/master # will create another version of the patch, on the same review.
 +
</source>
  
== JSDT packages ==
+
==== Reviewing a patch ====
  
=== JSDT Core ===
+
Incoming patch automatically triggers a build and will receive an automated vote according to whether patch breaks the build/tests or not. The CI job providing this vote is https://hudson.eclipse.org/webtools/job/jsdt-gerrit.
The JSDT core plugin (org.eclipse.wst.jsdt.core) provides the core JavaScript modeling.
+
* Anytime Hudson votes with '''<span style="color: red">-1</span>''', it generally means that something is wrong with the patch: it breaks build or make a test failing, so the patch shouldn't be merged. The build log should be inspected by submitter and reviewers to understand the cause of the bug and submit (or assist in submitting) a better patch.
 +
* Hudson voting '''<span style="color: green">+1</span>''' means that the test didn't introduce any regression visible by build or automated tests.
  
 +
Anyone is free to add comments and vote on a review. Committers have the final power to decide whether or not a patch can be merged.
  
{| border="1"
+
==== List reviews and be notified ====
|+ Core plugin packages
+
! package !! function
+
|-
+
! org.eclipse.wst.jsdt.core
+
| public apis for the module
+
|-
+
! org.eclipse.wst.jsdt.core.ast
+
| The public apis for the read-only AST used by inference engines
+
|-
+
! org.eclipse.wst.jsdt.core.compiler
+
| the public apis for the validator
+
|-
+
! org.eclipse.wst.jsdt.core.compiler.libraries
+
| libraries which define the javascript language apis and the browser DOM apis
+
|-
+
! org.eclipse.wst.jsdt.core.dom
+
| Modifiable JavaScript model DOM
+
|-
+
! org.eclipse.wst.jsdt.core.dom.rewrite
+
| support for updating the dom
+
|-
+
! org.eclipse.wst.jsdt.core.eval
+
| support for evaluating code fragments
+
|-
+
! org.eclipse.wst.jsdt.core.formatter
+
| public apis for javascript formatting
+
|-
+
! org.eclipse.wst.jsdt.core.infer
+
| support for inferencing and inferencing extensions
+
|-
+
! org.eclipse.wst.jsdt.core.search
+
| public apis for search
+
|-
+
! org.eclipse.wst.jsdt.core.util
+
| public utility apis
+
|-
+
! org.eclipse.wst.jsdt.internal.codeassist
+
| support for code assist and selection
+
|-
+
! org.eclipse.wst.jsdt.internal.codeassist.complete
+
| support for code assist
+
|-
+
! org.eclipse.wst.jsdt.internal.codeassist.impl
+
| support for code assist
+
|-
+
! org.eclipse.wst.jsdt.internal.codeassist.select
+
| support for code selection
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler
+
| validation code
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.ast
+
| internal javascript AST (Abstract Syntax Tree)
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.batch
+
| support for batch validation
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.classfmt
+
| ??
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.env
+
| ??
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.flow
+
| support for analyzing code flow for unused vars, etc
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.impl
+
| implementation of public apis
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.lookup
+
| support for resolving var/function references
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.parser
+
| the parser
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.parser.diagnose
+
| the diagnose parser used when there are syntax errors
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.problem
+
| support for problem messages
+
|-
+
! org.eclipse.wst.jsdt.internal.compiler.util
+
| parser/validator utilities
+
|-
+
! org.eclipse.wst.jsdt.internal.core
+
| implementation of public apis
+
|-
+
! org.eclipse.wst.jsdt.internal.core.builder
+
| implementation of eclipse builder extension
+
|-
+
! org.eclipse.wst.jsdt.internal.core.dom.rewrite
+
| support for updating code on DOM changes
+
|-
+
! org.eclipse.wst.jsdt.internal.core.hierarchy
+
| support for generating class hierarchy
+
|-
+
! org.eclipse.wst.jsdt.internal.core.index
+
| support for indexing the model, used by search
+
|-
+
! org.eclipse.wst.jsdt.internal.core.interpret
+
| javascript interpreter - under development , currently not used
+
|-
+
! org.eclipse.wst.jsdt.internal.core.interpret.builtin
+
| implementation of javascript language functions used by interpreter
+
|-
+
! org.eclipse.wst.jsdt.internal.core.search
+
| searching functions
+
|-
+
! org.eclipse.wst.jsdt.internal.core.search.indexing
+
| indexing of javascript
+
|-
+
! org.eclipse.wst.jsdt.internal.core.search.matching
+
| functions to determine if possible search match is exact match
+
|-
+
! org.eclipse.wst.jsdt.internal.core.search.processing
+
| search
+
|-
+
! org.eclipse.wst.jsdt.internal.core.util
+
| internal utilities
+
|-
+
! org.eclipse.wst.jsdt.internal.formatter
+
| formatter implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.formatter.align
+
| formatter implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.formatter.comment
+
| comment formatter implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.oaametadata
+
| support for OpenAjax metadata
+
|-
+
! org.eclipse.wst.jsdt.launching
+
| misc utilities
+
|-
+
! org.eclipse.wst.jsdt.libraries
+
| Library support
+
|}
+
  
===JSDT UI===
+
You can see the list of open Gerrit reviews at https://git.eclipse.org/r/#/q/status:open+project:jsdt/webtools.jsdt,n,z .
User interface code
+
  
{| border="1"
+
Regular contributors and committers should really subscribe to notifications of proposed patches. You can set up notifications for proposed incoming changes at https://git.eclipse.org/r/#/settings/projects
|+ Core plugin packages
+
! package !! function
+
|-
+
! org.eclipse.wst.jsdt.internal.corext
+
|  refactoring support
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.buildpath
+
| support for include path editing
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.callhierarchy
+
| support for call hierarchy
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.codemanipulation
+
|  support for code refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.dom
+
+
|- support for dom maniputation used for refactoring
+
! org.eclipse.wst.jsdt.internal.corext.dom.fragments
+
|  support for manipulating dom fragments
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.fix
+
|  support for quick fix
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.javadoc
+
| support for jsdoc editing
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring
+
|  support for refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.base
+
|  support for refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.binary
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.changes
+
| refactoring change classes
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.code
+
|  refactoring of code segments
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.code.flow
+
| support for refactoring of code segments
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.delegates
+
|  support for "create delegates" action
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.generics
+
|  currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.nls
+
| currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.nls.changes
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.participants
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.rename
+
|  rename refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.reorg
+
| copy/move refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.scripting
+
|  support for scripiting of refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.sef
+
| encapsulate field refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.structure
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.structure.constraints
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.surround
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.tagging
+
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.typeconstraints
+
|  currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.typeconstraints.types
+
|  currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.typeconstraints.typesets
+
|  currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.typeconstraints2
+
|  currently unused
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.refactoring.util
+
|  refactoring utilities
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.template.java
+
|  support for templates
+
|-
+
! org.eclipse.wst.jsdt.internal.corext.util
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.actions
+
|  implementation of actions
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.browsing
+
|  currently unused - support for browse perspective
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.callhierarchy
+
|  ui for call hierarchy
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.commands
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.compare
+
|  compare ui
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.dialogs
+
|  various diaglogs
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.dnd
+
|  drag/drop support
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.filters
+
|  implementation of view filters
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.fix
+
|  automatic cleanup functions
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.infoviews
+
|  various views
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.javadocexport
+
|  export of js doc
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.javaeditor
+
|  javascirpt editor implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.javaeditor.saveparticipant
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.javaeditor.selectionactions
+
|  change selection actions
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.model
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.navigator
+
|  implementation of navigator
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.packageview
+
| implementation of script explorer
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.preferences
+
| preferences ui
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.preferences.cleanup
+
| ui for cleanup preferences
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.preferences.formatter
+
| ui for formatter preferences
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring
+
| ui for refactoring preferences
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.actions
+
| actions for refactoring
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.binary
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.code
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.contentassist
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.nls
+
| current unused
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.nls.search
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.reorg
+
| move/copy/delete
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.refactoring.sef
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.search
+
| search ui
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text
+
| javascript source editing utilites
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.comment
+
| comment editing
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.correction
+
| quick fix implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.folding
+
|  folding implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.html
+
| editing of html inside jsdoc
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.java
+
|  content assist implementation
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.java.hover
+
| hover help 
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.javadoc
+
|  jsdoc editing
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.spelling
+
| spell checking
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.spelling.engine
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.template.contentassist
+
| content assist templates
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.text.template.preferences
+
| template editing
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.typehierarchy
+
| type hierarchy ui
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.util
+
| utilities
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.viewsupport
+
| view utilities
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.wizards
+
| wizards
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.wizards.buildpaths
+
| include path editing
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.wizards.buildpaths.newsourcepage
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields
+
+
|-
+
! org.eclipse.wst.jsdt.internal.ui.workingsets
+
+
|-
+
! org.eclipse.wst.jsdt.libraries
+
+
|-
+
! org.eclipse.wst.jsdt.ui
+
+
|-
+
! org.eclipse.wst.jsdt.ui.actions
+
+
|-
+
! org.eclipse.wst.jsdt.ui.dialogs
+
+
|-
+
! org.eclipse.wst.jsdt.ui.project
+
+
|-
+
! org.eclipse.wst.jsdt.ui.refactoring
+
+
|-
+
! org.eclipse.wst.jsdt.ui.search
+
+
|-
+
! org.eclipse.wst.jsdt.ui.text
+
+
|-
+
! org.eclipse.wst.jsdt.ui.text.folding
+
+
|-
+
! org.eclipse.wst.jsdt.ui.text.java
+
+
|-
+
! org.eclipse.wst.jsdt.ui.text.java.hover
+
+
|-
+
! org.eclipse.wst.jsdt.ui.wizards
+
+
|}
+
  
== Generating the parser ==
+
=== Static analysis with SonarQube ===
Follow the instructions at http://www.eclipse.org/jdt/core/howto/generate%20parser/generateParser.html for generating the parser.  The parser grammer file is located in cvs at sourceediting/plugins/org.eclipse.wst.jsdt.core/grammer/js.g
+
  
== JUnit Tests ==
+
JSDT uses SonarQube to get reports about static analysis. Those can show potential bugs, performance traps, or just bad practices. Here is the status of JSDT on these topics: https://dev.eclipse.org/sonar/dashboard/index/org.eclipse.webtools.jsdt:jsdt-parent . Any help to clean up warnings is welcome!
  
== Debugging JSDT ==
 
  
 
[[Category:JSDT]]
 
[[Category:JSDT]]

Latest revision as of 18:29, 19 April 2016


JSDT
Website
Download
Community
Mailing ListForumsIRCmattermost
Bugzilla
OpenHelp WantedBug Day
Contribute
Browse Source


JSDT is a subproject of WTP providing JavaScript editing features based on JDT; other editors based on SSE; Nodejs and JS debugging support based on ChromeDevTools and much more. Check the project pages below and see Developer Resources to get the list of Source repositories:

  • JSDT: JavaScript Development Tools
  • WTP: WebTools Platform, parent project since WTP3.0
  • SSE: Structured Source Editing, for editors like XML, CSS, JSON
  • JDT: Java Development Tools, extended by the JavaScript Editor

Contributing to JSDT

The JSDT is driven by a small and dedicated development team with limited resources. ANY serious developers or contributors will be enthusiastically welcomed. For more information on how to become a Committer, read how we nominate and elect new committers according the standard Eclipse process.

To contribute to JSDT you can report bugs, resolve bugs and write documents or create media contents to spread your knowledge.

Getting in touch with the Community

For more information about contributing to JSDT or for questions about its internals you have few options:

Bugzilla for JSDT Bugs

You can Report a JSDT bug through Eclipse Bugzilla choosing WebTools category, JSDT component.

Here is a list of open JSDT bugs. We're working through them as fast as we can!

Don't forget to subscribe to Bugzilla notifications for JSDT. Here is an "how-to" reminder:

Contribute Code

As Contributor, you can fix JSDT bugs and send code contributions via Gerrit:

  • To start you need to sign the CLA and to [setup the development environment]
  • Then pick an open JSDT Bug, if not assigned to any team member, assign it to yourself.
  • Solve the bug and test the solution, so you can commit and push your change with Gerrit.
  • Now wait for a committer who has to review and approve (+1) before your changes are committed.

Below you can read how to setup the development environment, get the source code, edit the source, run the application, perform tests, and commit the changes via Gerrit.

Setup the Development Environment

To setup the development environment you can either use a Full Stack Eclipse IDE loaded with the Target Platform Plug-ins, or use an Eclipse IDE for coding and keep a separate installation as a Target Platform.

Separating your development IDE from Target Platform makes your IDE lighter, more stable when adding development plug-ins and more flexible for development against different versions.

If you're new to this setup, watch once this video to see a full setup for JSDT development environment: https://www.youtube.com/watch?v=SFxfuudlau8 (for Mars.1).

Eclipse IDE + Target Platform aside

Download recent builds of Eclipse IDE and Target Platform from the eclipse download page: https://www.eclipse.org/downloads/

As an example, for Mars.2, you need to download:

After the downloads, unzip both installations. Launch the IDE, and remember you should never launch or update the Target Platform.

Target Platform, API Baseline and Other Preferences

For the development you'll need to edit Preferences, and set the Target Platform, API Baselines and other recommended values.

Set-downloaded-instalaltion-as-target-platform.png

To set the Target Platform and the API Baseline open Windows > Preferences from menu and then select:

  • Plug-in Development > API Baseline Click "Add Baseline" and point to the Target Platform installation
  • Plug-in Development > Target Platform Click "Add.." and point to the Target Platform installation.

To set the other recommended preferences in line with the Platform_UI/How_to_Contribute guidelines open Windows > Preferences from menu and then select:

  • Preferences > General > Workspace, set text file delimiters to Unix line delimiters
  • Preferences > Java > Editor > Save Actions, enable the “Perform the selected actions ..” and set:
    • Format Source Code > Format Edited Lines: to avoid formatting the whole file, but limit the changes to edited lines.
    • Additional Actions > Remove Trailing Whitespaces: to avoid adding trailing whitespaces
  • Preferences > Java > Installed JREs add the needed JREs. Usually I add Java8, 7 and 6.

Get the Source Code

Note: If you already have local Git repositories with JSDT projects, you can switch to Git perspective, and import them in the Git Repository View, via the "Add an existing local repository" Link. So doing, the download of projects from the project set will re-use those imported repositories, instead of doing a full download.

JSDT Source Repositories

To edit JSDT code, you will need to fetch code from four project repositories. Below you can see the Gerrit URLs.

https://git.eclipse.org/r/p/jsdt/webtools.jsdt
https://git.eclipse.org/r/p/sourceediting/webtools.sourceediting
http://git.eclipse.org/gitroot/www.eclipse.org/webtools.git
https://git.eclipse.org/r/platform/eclipse.platform.runtime

If you already provided Eclipse your Gerrit https password, you can clone and setup quickly by prepending your username to the URL as https://<YOUR-USERNAME>@git.eclipse.org/....

JSDT ProjectSet

The JSDT ProjectSet defines all the project needed to develop on JSDT, along with the needed repositories.

wst.jsdt_.allProjects_20160209.psf

Then import all projects via:

  • Import > Team > Team Project Set and choose the project set file

Import-jsdt-project-set.png

Please Note: Sometimes the ProjectSet could be not in sync with latest developments. If so, you can fix by adding missing projects, and looking in the \bundles\ folder of JSDT repositories.

JSDT Git Sources

Testing

Here you can find information on JSDT testing by launching an inner eclipse, by building and testing locally and about functional testing scenarios.

Launch the Target Platform from IDE

Launching an inner eclipse with target platform plugins onboard, added by the plugins of which you are editing the source code:

  • Create a new launch configuration, based on plugins contained in the target platform
  • Then Run the launch configuration. You will see a new Inner Eclipse popping up.
  • If needed you can debug this Eclipse instance you’re going to develop against.

You can check the video starting 9'44" to see how to choose plug-ins and run the application.

Building and testing JSDT locally

Simply run mvn clean verify -Pbuild-individual-bundles -DskipTests=false. This command will run the Unit-tests. After the build, you can install your JSDT snapshot in an Eclipse IDE or other RCP application using the p2 repository in location site/target/repository

JSDT Functional Testing

Testing Scenarios

Gerrit Reviews

Pushing a new patch for review

You can use Gerrit (mandatory reading, important to set up hooks, SSH keys, CLA & other) to push Git commits on JSDT repositories. The repo URL for JSDT@Gerrit is ssh://user@git.eclipse.org:29418/jsdt/webtools.jsdt. Once logged into Gerrit, you can see more details about the URL at https://git.eclipse.org/r/#/admin/projects/jsdt/webtools.jsdt .

Assuming you named this repo gerrit, you can push a commit to one of this repository with

$ git push gerrit HEAD:refs/for/master

This will give you the URL of the Gerrit review where you can interact with project committers to get your commit merged.

In case you need to push another version of the patch, don't forget to copy the Change-Id from the Gerrit review if you didn't set up the git hook. Providing another version of the patch doesn't require a new commit, simply amend the one you already pushed, and push it again:

$ git log -1 #Shows the commit. Message should contain Sign-Off-By and Change-Id
$ git add file/to/change
$ git commit --amend # add --signoff if Sign-Off-By is missing, and copy Change-Id from Gerrit review if missing
$ git push gerrit HEAD:refs/for/master # will create another version of the patch, on the same review.

Reviewing a patch

Incoming patch automatically triggers a build and will receive an automated vote according to whether patch breaks the build/tests or not. The CI job providing this vote is https://hudson.eclipse.org/webtools/job/jsdt-gerrit.

  • Anytime Hudson votes with -1, it generally means that something is wrong with the patch: it breaks build or make a test failing, so the patch shouldn't be merged. The build log should be inspected by submitter and reviewers to understand the cause of the bug and submit (or assist in submitting) a better patch.
  • Hudson voting +1 means that the test didn't introduce any regression visible by build or automated tests.

Anyone is free to add comments and vote on a review. Committers have the final power to decide whether or not a patch can be merged.

List reviews and be notified

You can see the list of open Gerrit reviews at https://git.eclipse.org/r/#/q/status:open+project:jsdt/webtools.jsdt,n,z .

Regular contributors and committers should really subscribe to notifications of proposed patches. You can set up notifications for proposed incoming changes at https://git.eclipse.org/r/#/settings/projects

Static analysis with SonarQube

JSDT uses SonarQube to get reports about static analysis. Those can show potential bugs, performance traps, or just bad practices. Here is the status of JSDT on these topics: https://dev.eclipse.org/sonar/dashboard/index/org.eclipse.webtools.jsdt:jsdt-parent . Any help to clean up warnings is welcome!