You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Please see [the wiki][wiki] for more information regarding development.
4
4
5
5
## Building
6
6
7
-
The project includes a maven configuration file using the tycho plug-in, which is part of the [maven eclipse plugin](http://www.eclipse.org/m2e/). Running `mvn install` will install *most* dependencies. Note that if you are not using maven, this plugin depends on https://github.com/khatchad/edu.cuny.citytech.refactoring.common, the **Eclipse SDK**, **Eclipse SDK tests**, and the **Eclipse testing framework** (may also be called the **Eclipse Test Framework**). The latter three can be installed from the "Install New Software..." menu option under "Help" in Eclipse.
7
+
The project includes a maven configuration file using the tycho plug-in, which is part of the [maven eclipse plugin](http://www.eclipse.org/m2e/). Running `mvn install` will install *most* dependencies. Note that if you are not using maven, this plugin depends on https://github.com/khatchad/edu.cuny.citytech.refactoring.common, the **Eclipse SDK**, **Eclipse SDK tests**, the **Eclipse testing framework** (may also be called the **Eclipse Test Framework**), and [Metrics](http://metrics2.sourceforge.net). Some of these can be installed from the "Install New Software..." menu option under "Help" in Eclipse.
8
8
9
9
## Generating Entry Points Files
10
10
@@ -30,6 +30,8 @@ Key | Value Type | Description
30
30
---------------- | ---------- | ----------
31
31
nToUseForStreams | Integer | The value of N to use while building the nCFA for stream types.
32
32
33
+
More info can be found on [this wiki page](https://github.com/ponder-lab/Optimize-Java-8-Streams-Refactoring/wiki/Running-the-Evaluator).
<imgsrc="https://raw.githubusercontent.com/ponder-lab/Optimize-Java-8-Streams-Refactoring/master/edu.cuny.hunter.streamrefactoring.ui/icons/icon.png"alt="Icon"align="left"height=150pxwidth=150px/> The Java 8 Stream API sets forth a promising new programming model that incorporates functional-like, MapReduce-style features into a mainstream programming language. However, using streams efficiently may involve subtle considerations.
7
+
<imgsrc="https://raw.githubusercontent.com/ponder-lab/Optimize-Java-8-Streams-Refactoring/master/edu.cuny.hunter.streamrefactoring.ui/icons/icon.png"alt="Icon"align="left"height=150pxwidth=150px/> The Java 8 Stream API sets forth a promising new programming model that incorporates functional-like, MapReduce-style features into a mainstream programming language. However, using streams efficiently may involve subtle considerations.
8
8
9
9
This tool consists of automated refactoring research prototype plug-ins for [Eclipse][eclipse] that assists developers in writing optimal stream client code in a semantics-preserving fashion. Refactoring preconditions and transformations for automatically determining when it is safe and possibly advantageous to convert a sequential stream to parallel and improve upon already parallel streams are included. The approach utilizes both [WALA][wala] and [SAFE][safe].
@@ -32,14 +33,16 @@ Currently, the refactoring works only via the package explorer and the outline v
32
33
33
34
## Installation
34
35
36
+
The latest release is [v0.18.0][v0.18.0]. It has been tested on Eclipse IDE for RCP and RAP Developers Version: 2019-03 (4.11.0), Build id: 20190314-1200 under OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.19.04.2-b03) and OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode) on Ubuntu 19.04.
37
+
35
38
[This video][install] demonstrates the different ways that this tool can be installed.
36
39
37
40
### Update Site
38
41
39
42
An alpha version of our tool is available via an Eclipse update site at: https://raw.githubusercontent.com/ponder-lab/Optimize-Java-8-Streams-Refactoring/master/edu.cuny.hunter.streamrefactoring.updatesite. Please choose the latest version of the "Optimize Stream Refactoring."
40
43
41
44
### Eclipse Marketplace
42
-
45
+
43
46
You may also install the tool via the [Eclipse Marketplace](https://marketplace.eclipse.org/content/optimize-java-8-streams-refactoring) by dragging this icon to your running Eclipse workspace: [](http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=4056021"Drag to your running Eclipse* workspace. *Requires Eclipse Marketplace Client")
44
47
45
48
### Dependencies
@@ -68,7 +71,7 @@ Explicit entry points may be marked using the appropriate annotation found in th
68
71
69
72
There are currently some limitations with embedded streams (i.e., streams declared as part of lambda expressions sent as arguments to intermediate stream operations). This is due to model differences between the Eclipse JDT and WALA. See [#155](https://github.com/ponder-lab/Java-8-Stream-Refactoring/issues/155) for details.
70
73
71
-
In general, there is [an issue](https://github.com/wala/WALA/issues/281) with the mapping between the Eclipse DOM and WALA DOM, particuarly when using Anonymous Inner Classes (AICs). We are currently working with the WALA developers to resolve [this issue](https://github.com/ponder-lab/Java-8-Stream-Refactoring/issues/155).
74
+
In general, there is [an issue](https://github.com/wala/WALA/issues/2/edit81) with the mapping between the Eclipse DOM and WALA DOM, particuarly when using Anonymous Inner Classes (AICs). We are currently working with the WALA developers to resolve [this issue](https://github.com/ponder-lab/Java-8-Stream-Refactoring/issues/155).
72
75
73
76
## Contributing
74
77
@@ -82,6 +85,35 @@ For information on contributing, see [CONTRIBUTING.md][contrib].
82
85
83
86
See the [wiki][wiki] for further information.
84
87
88
+
## Publications
89
+
90
+
<aname="Khatchadourian2019"></a>Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, and Syed Ahmed. Safe automated refactoring for intelligent parallelization of Java 8 streams. In <em>International Conference on Software Engineering</em>, ICSE '19, pages 619--630, Piscataway, NJ, USA, May 2019. ACM/IEEE, IEEE Press. [ <ahref="http://www.cs.hunter.cuny.edu/~Raffi.Khatchadourian99/all_bib.html#Khatchadourian2019">bib</a> | <ahref="http://dx.doi.org/10.1109/ICSE.2019.00072">DOI</a> | <ahref="http://www.slideshare.net/khatchad/safe-automated-refactoring-for-intelligent-parallelization-of-java-8-streams">slides</a> | <ahref="http://academicworks.cuny.edu/hc_pubs/489">http</a> ]
91
+
92
+
<aname="Khatchadourian2018b"></a>Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, and Syed Ahmed. A tool for optimizing Java 8 stream software via automated refactoring. In <em>International Working Conference on Source Code Analysis and Manipulation</em>, SCAM '18, pages 34--39. IEEE, IEEE Press, September 2018. Engineering Track. [ <ahref="http://www.cs.hunter.cuny.edu/~Raffi.Khatchadourian99/all_bib.html#Khatchadourian2018b">bib</a> | <ahref="http://dx.doi.org/10.1109/SCAM.2018.00011">DOI</a> | <ahref="http://www.slideshare.net/khatchad/a-tool-for-optimizing-java-8-stream-softwarevia-automated-refactoring">slides</a> | <ahref="http://academicworks.cuny.edu/hc_pubs/429">http</a> ]
93
+
94
+
## Citation
95
+
96
+
Please cite this work as follows:
97
+
98
+
```bibtex
99
+
@inproceedings{Khatchadourian2018b,
100
+
author = {Raffi Khatchadourian and Yiming Tang and Mehdi Bagherzadeh and Syed Ahmed},
101
+
title = {A Tool for Optimizing {Java} 8 Stream Software via Automated Refactoring},
102
+
booktitle = {International Working Conference on Source Code Analysis and Manipulation},
Copy file name to clipboardExpand all lines: edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/analysis/StreamStateMachine.java
+4-2Lines changed: 4 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -160,15 +160,17 @@ public int getNumberOfStreamInstancesSkipped() {
Copy file name to clipboardExpand all lines: edu.cuny.hunter.streamrefactoring.core/src/edu/cuny/hunter/streamrefactoring/core/refactorings/OptimizeStreamsRefactoringProcessor.java
0 commit comments