Skip to content

Commit

Permalink
Merge pull request #353 from Vineflower/develop/1.10.0
Browse files Browse the repository at this point in the history
Release Vineflower 1.10.0
  • Loading branch information
jaskarth authored Apr 4, 2024
2 parents 3482e13 + 1882f77 commit e0d0cc0
Show file tree
Hide file tree
Showing 788 changed files with 47,696 additions and 13,889 deletions.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Bug report
about: Create a report to help improve Vineflower
title: ''
labels: bug
assignees: ''

---

## Vineflower version
Replace this text with the version of Vineflower that you are using.

## Describe the bug
Replace this text with a clear and concise description of what the bug is.

## Additional information
Replace this text with any stacktraces, screenshots, example code, or class files (Only if you have the rights to distribute them!) here.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea to improve Vineflower
title: ''
labels: enhancement
assignees: ''

---

## Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

## Describe the solution you'd like
A clear and concise description of what you want to happen.

## Additional context
Add any other context or screenshots about the feature request here.
23 changes: 12 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,29 @@ jobs:
build:
strategy:
matrix:
java: [8, 11, 17]
runs-on: ubuntu-20.04
java: [11, 17, 19]
runs-on: ubuntu-22.04
container:
image: openjdk:${{ matrix.java }}-jdk
image: eclipse-temurin:${{ matrix.java }}
options: --user root
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
- run: ./gradlew build --stacktrace
- name: Build with Gradle
run: |
chmod +x gradlew
./gradlew build --stacktrace
- name: Archive test results
if: "${{ always() }}"
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: "test-results-java${{ matrix.java }}"
path: |
build/reports/
*/build/reports/
plugins/*/build/reports/
build/test-results/**/*.xml
- name: Codecov
uses: codecov/[email protected]
publish-test-results:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
needs: [build]
permissions:
issues: write
Expand All @@ -34,7 +35,7 @@ jobs:
if: success() || failure()
steps:
- name: Download Artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Publish Test Results
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ on:
- '*'
jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
container:
image: openjdk:15-jdk
image: eclipse-temurin:17
options: --user root
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
- run: ./gradlew build publish publishToSonatype closeAndReleaseSonatypeStagingRepository -x test --stacktrace
env:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ on: [push, pull_request]
jobs:
publish:
if: ${{ github.repository_owner == 'Vineflower' && contains(github.ref_name, 'develop') }}
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
container:
image: openjdk:15-jdk
image: eclipse-temurin:17
options: --user root
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
- run: ./gradlew publish --stacktrace
env:
STATUS: snapshot
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_KEY_PASSPHRASE: ${{ secrets.SIGNING_KEY_PASSPHRASE }}
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
SONATYPE_PASS: ${{ secrets.SONATYPE_PASS }}
SONATYPE_PASS: ${{ secrets.SONATYPE_PASS }}
19 changes: 16 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
/.idea/
## Gradle
/.gradle/
/buildSrc/.gradle/
/build/
/buildSrc/build/

## IDEA
/.idea/
/out/

## Eclipse
.settings/
.classpath
.project
bin

## VSCode
.vscode

## Common
/testData/classes/java*/
/testData/classes/jasm/
/testData/classes/groovy/
/testData/classes/kt/
/testData/classes/scala/
bin
/testData/classes/scala/
10 changes: 6 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ Welcome! Thank you for taking an interest in contributing to Vineflower.
* The [ARCHITECTURE.md](./ARCHITECTURE.md) file in the repository contains technical information on how Vineflower is structured. Reading that will greatly help with familiarizing yourself with the codebase and with PR development.
* It's highly recommended to socialize your changes first through our [social platforms](https://github.com/Vineflower) before making a pull request!
* Check out the issue tracker and roadmap! You can find good things to contribute there.
* Make sure your pull request is based off of the latest development branch in the repository. The main branch is a stable snapshot, representing the latest released version of the decompiler.

## Good things to contribute
* Fixes to bugs present in the decompiler.
* Improvements to the readability of the decompiled code.
* New feature support for the decompiler.
* Optimization, to make it run faster and use fewer resources.
Expand All @@ -17,7 +19,7 @@ Welcome! Thank you for taking an interest in contributing to Vineflower.
* More technical issues are usually found in the [Test class](https://github.com/Vineflower/vineflower/blob/master/test/org/jetbrains/java/decompiler/SingleClassesTest.java) where individual wrong tests are described with their errors.

## Code Style and guidelines
While the code inherited from FernFlower varies with its style and syntax, it's expected that pull requests stick to our established code style.
While the code inherited from Fernflower varies with its style and syntax, it's expected that pull requests stick to our established code style.
* We use UpperCamelCase for class names, camelCase for method, variable, local variable, and field names, and UPPER_SNAKE_CASE for static final fields. Please always qualify instance fields with a `this.` qualifier.
* Please try to keep pull requests small and self-contained! It makes reviewing and maintaining the patch much easier.
* Statements should always have braces around them, even if they are only 1 line in their length.
Expand All @@ -30,12 +32,12 @@ While the code inherited from FernFlower varies with its style and syntax, it's
* When contributing, you should add new tests that cover the area of code that you are targeting. Having more tests makes the decompiler more robust, so it's always appreciated.

## Resources
FernFlower is a very complex and involved bit of software, and there's a lot going on in a rather questionable structure. Naturally, understanding it all is a challenge so various resources are provided here to aid with the process.
Fernflower is a very complex and involved bit of software, and there's a lot going on in a rather questionable structure. Naturally, understanding it all is a challenge so various resources are provided here to aid with the process.
* Knowing how java bytecode works is essential. You can find the detailed description of all the opcodes [here](https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html#jvms-6.5) or a simple list of them [here.](https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings)
* Graph theory comes up frequently in the statement analysis portion of FernFlower. It's useful knowing about [Basic Blocks](https://en.wikipedia.org/wiki/Basic_block), [Control Flow Graphs](https://en.wikipedia.org/wiki/Control-flow_graph), and [Dominators.](https://en.wikipedia.org/wiki/Dominator_(graph_theory))
* Graph theory comes up frequently in the statement analysis portion of Fernflower. It's useful knowing about [Basic Blocks](https://en.wikipedia.org/wiki/Basic_block), [Control Flow Graphs](https://en.wikipedia.org/wiki/Control-flow_graph), and [Dominators.](https://en.wikipedia.org/wiki/Dominator_(graph_theory))
* [Static Single Assignment Form](https://en.wikipedia.org/wiki/Static_single_assignment_form) is also used widely to track variables and their versions within the decompilation stages.
* The [Java Language Specification](https://docs.oracle.com/javase/specs/jls/se16/html/), while dense, is a good source of information regarding language features.
* The [ARCHITECTURE.md](./ARCHITECTURE.md) file in the repository contains important information about how FernFlower is structured.
* The [ARCHITECTURE.md](./ARCHITECTURE.md) file in the repository contains important information about how Fernflower is structured.
* The [social platforms](https://github.com/Vineflower) contains many people who have worked with the code before, so any remaining questions are best asked there.

## License
Expand Down
Loading

0 comments on commit e0d0cc0

Please sign in to comment.