Skip to content

Commit 64db906

Browse files
Update website
1 parent ef0e365 commit 64db906

1,677 files changed

Lines changed: 113290 additions & 102433 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SUPPLY-CHAIN.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Supply chain
2+
## Attest build artifacts
3+
The Spoon CI/CD pipeline attests all released artifacts by publishing attestations to the [sigstore/rekor](https://www.sigstore.dev/) public-good instance as well as storing them in the [Github's attestation registry](https://github.com/INRIA/spoon/attestations). Attestations are published using Github's [attest-build-provenance](https://github.com/actions/attest-build-provenance) action as a step in the [jreleaser job](https://github.com/ludvigch/spoon/blob/master/.github/workflows/jreleaser.yml). A list of the attestations created for a release can be found in the summary of a job and the sigstore/rekor links for each attestation can be found in the log of the jreleaser job.
4+
5+
## Finding attestations
6+
7+
Rekor is searchable with the hash of an attested artifact, for example attestation for spoon-core-11.1.1-beta-11-jar-with-dependencies.jar can be found at
8+
<https://search.sigstore.dev?hash=804c2ab449cc16052b467edc3ab1f7cf931f8e679685c0e16fab2fcc16ecfb41>
9+
10+
Github provides an [`attestations` tab](https://github.com/INRIA/spoon/attestations) for all repos and a [REST API Endpoint](https://docs.github.com/en/rest/users/attestations)
11+
12+
## Verifying attestations
13+
14+
The most straight-forward approach is to use GitHub CLI's [`gh attestation verify`](https://cli.github.com/manual/gh_attestation_verify) to verify the attestation of an artifact by running:
15+
16+
`gh attestation verify <artifact-name>.jar -R INRIA/spoon`
17+
18+
For example, let's verify the [spoon-core-11.1.1-beta-11-jar-with-dependencies.jar](https://repo1.maven.org/maven2/fr/inria/gforge/spoon/spoon-core/11.1.1-beta-11/spoon-core-11.1.1-beta-11-jar-with-dependencies.jar) artifact.
19+
20+
### Alternative 1: Using GitHub API
21+
22+
Install `gh`, see doc at <https://cli.github.com/>
23+
24+
```
25+
curl -O https://repo1.maven.org/maven2/fr/inria/gforge/spoon/spoon-core/11.1.1-beta-11/spoon-core-11.1.1-beta-11-jar-with-dependencies.jar
26+
gh attestation verify spoon-core-11.1.1-beta-11-jar-with-dependencies.jar -R INRIA/spoon
27+
```
28+
29+
Output:
30+
```
31+
Loaded digest sha256:804c2ab449cc16052b467edc3ab1f7cf931f8e679685c0e16fab2fcc16ecfb41 for file://spoon-core-11.1.1-beta-11-jar-with-dependencies.jar
32+
Loaded 1 attestation from GitHub API
33+
✓ Verification succeeded!
34+
35+
sha256:804c2ab449cc16052b467edc3ab1f7cf931f8e679685c0e16fab2fcc16ecfb41 was attested by:
36+
REPO PREDICATE_TYPE WORKFLOW
37+
INRIA/spoon https://slsa.dev/provenance/v1 .github/workflows/jreleaser.yml@refs/heads/master
38+
39+
```
40+
41+
### Alternative 2: Using a downloaded attestation
42+
43+
[Dowload the attestation.](https://github.com/INRIA/spoon/attestations/2750640/download)
44+
45+
```
46+
curl -o ./INRIA-spoon-attestation-2750640.sigstore.json https://github.com/INRIA/spoon/attestations/2750640/download
47+
gh attestation verify spoon-core-11.1.1-beta-11-jar-with-dependencies.jar -R INRIA/spoon --bundle ./INRIA-spoon-attestation-2750640.sigstore.json
48+
```
49+
50+
Output:
51+
```
52+
Loaded digest sha256:804c2ab449cc16052b467edc3ab1f7cf931f8e679685c0e16fab2fcc16ecfb41 for file://spoon-core-11.1.1-beta-11-jar-with-dependencies.jar
53+
Loaded 1 attestation from INRIA-spoon-attestation-2750640.sigstore.json
54+
✓ Verification succeeded!
55+
56+
sha256:804c2ab449cc16052b467edc3ab1f7cf931f8e679685c0e16fab2fcc16ecfb41 was attested by:
57+
REPO PREDICATE_TYPE WORKFLOW
58+
INRIA/spoon https://slsa.dev/provenance/v1 .github/workflows/jreleaser.yml@refs/heads/master
59+
60+
```

code_elements.html

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,18 @@ <h3 id="ctcase">CtCase</h3>
569569
<span class="k">case</span> <span class="mi">1</span><span class="o">:</span> <span class="c1">// &lt;-- case statement</span>
570570
<span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"foo"</span><span class="o">);</span>
571571
<span class="o">}</span>
572+
</code></pre></div></div>
573+
<h3 id="ctcasepattern">CtCasePattern</h3>
574+
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtCasePattern.html">(javadoc)</a></p>
575+
576+
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
577+
<span class="nc">Number</span> <span class="n">num</span> <span class="o">=</span> <span class="nc">Math</span><span class="o">.</span><span class="na">random</span><span class="o">()</span> <span class="o">&lt;</span> <span class="mf">0.5</span> <span class="o">?</span> <span class="nc">Integer</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="mi">1</span><span class="o">)</span> <span class="o">:</span> <span class="nc">Double</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="mf">10.5</span><span class="o">);</span>
578+
<span class="k">switch</span> <span class="o">(</span><span class="n">num</span><span class="o">)</span> <span class="o">{</span>
579+
<span class="k">case</span> <span class="nc">Integer</span> <span class="n">i</span> <span class="o">-&gt;</span> <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"int: "</span> <span class="o">+</span> <span class="n">i</span><span class="o">);</span>
580+
<span class="k">case</span> <span class="nc">Double</span> <span class="n">d</span> <span class="n">when</span> <span class="n">d</span> <span class="o">&gt;</span> <span class="mf">0.5</span> <span class="o">-&gt;</span> <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"double: "</span> <span class="o">+</span> <span class="n">d</span><span class="o">);</span>
581+
<span class="k">case</span> <span class="kc">null</span><span class="o">,</span> <span class="k">default</span> <span class="o">-&gt;</span> <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"other"</span><span class="o">);</span>
582+
<span class="o">}</span>
583+
572584
</code></pre></div></div>
573585
<h3 id="ctconditional">CtConditional</h3>
574586
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtConditional.html">(javadoc)</a></p>
@@ -740,6 +752,19 @@ <h3 id="ctoperatorassignment">CtOperatorAssignment</h3>
740752
<span class="kt">int</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
741753
<span class="n">x</span> <span class="o">*=</span> <span class="mi">3</span><span class="o">;</span> <span class="c1">// &lt;-- a CtOperatorAssignment</span>
742754

755+
</code></pre></div></div>
756+
<h3 id="ctrecordpattern">CtRecordPattern</h3>
757+
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtRecordPattern.html">(javadoc)</a></p>
758+
759+
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
760+
<span class="nc">Object</span> <span class="n">obj</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
761+
<span class="kt">boolean</span> <span class="n">longerThanTwo</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
762+
<span class="kd">record</span> <span class="nf">MyRecord</span><span class="o">(</span><span class="nc">String</span> <span class="n">value</span><span class="o">)</span> <span class="o">{}</span>
763+
<span class="c1">// MyRecord(var string) is the record pattern</span>
764+
<span class="k">if</span> <span class="o">(</span><span class="n">obj</span> <span class="k">instanceof</span> <span class="nf">MyRecord</span><span class="o">(</span><span class="kt">var</span> <span class="n">string</span><span class="o">))</span> <span class="o">{</span>
765+
<span class="n">longerThanTwo</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="o">;</span>
766+
<span class="o">}</span>
767+
743768
</code></pre></div></div>
744769
<h3 id="ctreturn">CtReturn</h3>
745770
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtReturn.html">(javadoc)</a></p>
@@ -888,6 +913,18 @@ <h3 id="ctunaryoperator">CtUnaryOperator</h3>
888913
<span class="kt">int</span> <span class="n">x</span><span class="o">=</span><span class="mi">3</span><span class="o">;</span>
889914
<span class="o">--</span><span class="n">x</span><span class="o">;</span> <span class="c1">// &lt;-- unary --</span>
890915

916+
</code></pre></div></div>
917+
<h3 id="ctunnamedpattern">CtUnnamedPattern</h3>
918+
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtUnnamedPattern.html">(javadoc)</a></p>
919+
920+
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
921+
<span class="nc">Object</span> <span class="n">obj</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Object</span><span class="o">();</span>
922+
<span class="kd">record</span> <span class="nf">X</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">)</span> <span class="o">{}</span>
923+
<span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="k">switch</span> <span class="o">(</span><span class="n">obj</span><span class="o">)</span> <span class="o">{</span>
924+
<span class="k">case</span> <span class="nf">X</span><span class="o">(</span><span class="n">_</span><span class="o">)</span> <span class="o">-&gt;</span> <span class="mi">0</span><span class="o">;</span> <span class="c1">// an unnamed pattern does neither mention a type nor a name</span>
925+
<span class="k">case</span> <span class="kc">null</span><span class="o">,</span> <span class="k">default</span> <span class="o">-&gt;</span> <span class="o">-</span><span class="mi">1</span><span class="o">;</span>
926+
<span class="o">};</span>
927+
891928
</code></pre></div></div>
892929
<h3 id="ctvariableread">CtVariableRead</h3>
893930
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/code/CtVariableRead.html">(javadoc)</a></p>
@@ -973,7 +1010,7 @@ <h3 id="ctrecord">CtRecord</h3>
9731010
<p><a href="http://spoon.gforge.inria.fr/mvnsites/spoon-core/apidocs/spoon/reflect/declaration/CtRecord.html">(javadoc)</a></p>
9741011

9751012
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
976-
<span class="n">record</span> <span class="nf">Point</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">,</span> <span class="kt">int</span> <span class="n">y</span><span class="o">)</span> <span class="o">{</span>
1013+
<span class="kd">record</span> <span class="nf">Point</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">,</span> <span class="kt">int</span> <span class="n">y</span><span class="o">)</span> <span class="o">{</span>
9771014
<span class="o">}</span>
9781015

9791016
</code></pre></div></div>

command_line.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ <h1 class="post-title-main">Using Spoon from the Command Line</h1>
493493

494494
<p>The basic usage of Spoon consists in defining the original source location and the list of compiled processors to be used.</p>
495495

496-
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">$</span><span class="w"> </span>java <span class="nt">-classpath</span> /path/to/binary/of/your/processor.jar:spoon-core--with-dependencies.jar spoon.Launcher <span class="nt">-i</span> /path/to/src/of/your/project <span class="nt">-p</span> fr.inria.gforge.spoon.processors.CatchProcessor
496+
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">$</span><span class="w"> </span>java <span class="nt">-classpath</span> /path/to/binary/of/your/processor.jar:spoon-core-11.2.1-with-dependencies.jar spoon.Launcher <span class="nt">-i</span> /path/to/src/of/your/project <span class="nt">-p</span> fr.inria.gforge.spoon.processors.CatchProcessor
497497
</code></pre></div></div>
498498

499499
<p>If you plan to repeatedly run Spoon from the command line, it may be a good idea to combine all of your commands into a single bash script. An example of this can be found <a href="https://github.com/INRIA/spoon/blob/master/doc/example_scripts/example_usage_script.sh">here</a>.</p>

0 commit comments

Comments
 (0)