Compare commits
103 commits
Author | SHA1 | Date | |
---|---|---|---|
e16a3eac76 | |||
ef3e35d766 | |||
10f738bea8 | |||
ad7032d82f | |||
c9585f3a5c | |||
e8c901c6c1 | |||
f55e010286 | |||
610a042ced | |||
ccc04bf81d | |||
4e373bfd10 | |||
91a113ed5a | |||
1c8fc1d685 | |||
a8d595cce0 | |||
6cd5bc8e8f | |||
b326e9787c | |||
bddb869fe8 | |||
f040cfd9f9 | |||
34042de676 | |||
c6c80b6f3f | |||
534be59ae8 | |||
a490b80f42 | |||
41b6af3a45 | |||
1b986c7f21 | |||
b26c0ff129 | |||
1659308eb5 | |||
638d12c5c2 | |||
c4672d88ae | |||
69c0b6692d | |||
5d0147154b | |||
b332c6e885 | |||
440cd91c8a | |||
dc2656200b | |||
b357caf341 | |||
71141e0b3e | |||
c5e11dd1cb | |||
9aaad3381e | |||
02a626a756 | |||
9ddf93057a | |||
dca356b140 | |||
6994600afe | |||
c2779f7462 | |||
6f3e4442dd | |||
2c8c219b81 | |||
51fa6fbab2 | |||
11476127f0 | |||
2fd73691c2 | |||
660a4ea840 | |||
fc84ae9d60 | |||
b3dce4fa0a | |||
41169b88d9 | |||
0429bbec0a | |||
bf6cf48978 | |||
6b638fcabb | |||
43cc65ba1f | |||
1b419e2baa | |||
e1263fd3e6 | |||
0a2a2f4b03 | |||
c93c9ea2d0 | |||
6f11563739 | |||
f623921ff3 | |||
d28388bcd4 | |||
becd6384cd | |||
143bb31a78 | |||
8198f1e985 | |||
826a967815 | |||
00f40e887f | |||
aa6d6a70b0 | |||
7aa0319d4d | |||
4de2b0b3f1 | |||
1141c3bbb8 | |||
cdd9fd345a | |||
a1fccaabc3 | |||
e5738ec79d | |||
d7d9cdf98c | |||
b7fb8d9728 | |||
a19e4e8ff3 | |||
c219852e85 | |||
a7674039df | |||
3f0c0ee51b | |||
0c0222800b | |||
5d24b4060a | |||
42dd870408 | |||
da0c2e17d7 | |||
2e3798dd72 | |||
818e40dcb9 | |||
95daa9d0d1 | |||
5b59813b8a | |||
0ac06e7a3d | |||
a8bfe12cc4 | |||
56f095e931 | |||
fb132d7dc9 | |||
1c653b818a | |||
4419ccb2f5 | |||
80bb55a713 | |||
9a09ea2737 | |||
03cd729e01 | |||
0b7cfcacdf | |||
ebd8a435ef | |||
792b253694 | |||
fde145f0b3 | |||
3c7bfba31a | |||
5110ac1cec | |||
98f88f9976 |
37 changed files with 1151 additions and 272 deletions
31
.github/workflows/bld.yml
vendored
31
.github/workflows/bld.yml
vendored
|
@ -4,29 +4,36 @@ on: [ push, pull_request, workflow_dispatch ]
|
|||
|
||||
jobs:
|
||||
build-bld-project:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
java-version: [ 17, 20 ]
|
||||
java-version: [ 17, 21, 24 ]
|
||||
kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ]
|
||||
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
distribution: "zulu"
|
||||
java-version: ${{ matrix.java-version }}
|
||||
|
||||
- name: Grant execute permission for bld
|
||||
run: chmod +x bld
|
||||
|
||||
- name: Download the dependencies
|
||||
- name: Download dependencies [examples]
|
||||
working-directory: examples
|
||||
run: ./bld download
|
||||
|
||||
- name: Run tests with bld
|
||||
run: ./bld compile test
|
||||
- name: Compile and Run Checkstyle [examples]
|
||||
working-directory: examples
|
||||
run: ./bld compile checkstyle-custom
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld download
|
||||
|
||||
- name: Run tests
|
||||
run: ./bld compile test
|
57
.github/workflows/pages.yml
vendored
57
.github/workflows/pages.yml
vendored
|
@ -0,0 +1,57 @@
|
|||
name: javadocs-pages
|
||||
|
||||
on:
|
||||
# Runs on pushes targeting the default branch
|
||||
push:
|
||||
branches: ["master"]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
# Allow one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
# Single deploy job since we're just deploying
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: "zulu"
|
||||
java-version: 17
|
||||
|
||||
- name: Build Javadocs
|
||||
run: ./bld download clean javadoc
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
# Upload generated Javadocs repository
|
||||
path: "build/javadoc/"
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
6
.idea/bld.xml
generated
Normal file
6
.idea/bld.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BldConfiguration">
|
||||
<events />
|
||||
</component>
|
||||
</project>
|
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
|
@ -0,0 +1,5 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
|
||||
</state>
|
||||
</component>
|
2
.idea/copyright/Apache_License.xml
generated
2
.idea/copyright/Apache_License.xml
generated
|
@ -1,6 +1,6 @@
|
|||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="notice" value="Copyright &#36;today.year the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
||||
<option name="notice" value="Copyright 2023-&#36;today.year the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
||||
<option name="myName" value="Apache License" />
|
||||
</copyright>
|
||||
</component>
|
13
.idea/icon.svg
generated
Normal file
13
.idea/icon.svg
generated
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 179 108" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-210.511,-96.3382)">
|
||||
<g transform="matrix(1,0,0,1,-23.3386,-649.816)">
|
||||
<g transform="matrix(0.221288,0,0,0.24,73.9536,390.254)">
|
||||
<path d="M722.568,1482.92L722.568,1921.1L808.968,1921.1L808.968,1888.7C822.168,1907.9 846.168,1930.1 893.568,1930.1C933.168,1930.1 961.968,1917.5 985.368,1893.5C1012.97,1865.9 1027.37,1827.5 1027.37,1786.1C1027.37,1741.7 1011.17,1705.1 985.368,1680.5C961.968,1658.3 928.968,1644.5 892.368,1644.5C862.968,1644.5 830.568,1654.1 808.968,1683.5L808.968,1482.92L722.568,1482.92ZM871.368,1718.9C888.768,1718.9 903.768,1723.7 917.568,1736.9C930.168,1748.9 938.568,1766.3 938.568,1787.9C938.568,1807.7 930.168,1825.1 917.568,1837.1C904.368,1849.7 887.568,1855.7 872.568,1855.7C856.368,1855.7 837.168,1849.1 823.368,1835.9C813.168,1826.3 803.568,1810.1 803.568,1787.9C803.568,1765.1 812.568,1749.5 822.768,1738.7C836.568,1724.3 852.768,1718.9 871.368,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
|
||||
<rect x="1083.77" y="1482.92" width="86.4" height="438.182" style="fill:rgb(250,144,82);fill-rule:nonzero;"/>
|
||||
<path d="M1531.37,1482.92L1444.97,1482.92L1444.97,1683.5C1423.37,1654.1 1390.97,1644.5 1361.57,1644.5C1324.97,1644.5 1291.97,1658.3 1268.57,1680.5C1242.77,1705.1 1226.57,1741.7 1226.57,1786.1C1226.57,1827.5 1240.97,1865.9 1268.57,1893.5C1291.97,1917.5 1320.77,1930.1 1360.37,1930.1C1407.77,1930.1 1431.77,1907.9 1444.97,1888.7L1444.97,1921.1L1531.37,1921.1L1531.37,1482.92ZM1382.57,1718.9C1401.17,1718.9 1417.37,1724.3 1431.17,1738.7C1441.37,1749.5 1450.37,1765.1 1450.37,1787.9C1450.37,1810.1 1440.77,1826.3 1430.57,1835.9C1416.77,1849.1 1397.57,1855.7 1381.37,1855.7C1366.37,1855.7 1349.57,1849.7 1336.37,1837.1C1323.77,1825.1 1315.37,1807.7 1315.37,1787.9C1315.37,1766.3 1323.77,1748.9 1336.37,1736.9C1350.17,1723.7 1365.17,1718.9 1382.57,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
204
.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
204
.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
|
@ -0,0 +1,204 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaDocConfiguration">
|
||||
<GENERAL>
|
||||
<MODE>UPDATE</MODE>
|
||||
<OVERRIDDEN_METHODS>false</OVERRIDDEN_METHODS>
|
||||
<SPLITTED_CLASS_NAME>true</SPLITTED_CLASS_NAME>
|
||||
<LEVELS>
|
||||
<LEVEL>FIELD</LEVEL>
|
||||
<LEVEL>METHOD</LEVEL>
|
||||
<LEVEL>TYPE</LEVEL>
|
||||
</LEVELS>
|
||||
<VISIBILITIES>
|
||||
<VISIBILITY>PUBLIC</VISIBILITY>
|
||||
<VISIBILITY>PROTECTED</VISIBILITY>
|
||||
<VISIBILITY>DEFAULT</VISIBILITY>
|
||||
</VISIBILITIES>
|
||||
</GENERAL>
|
||||
<TEMPLATES>
|
||||
<CLASSES>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+interface\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The interface ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+enum\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The enum ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+class\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
</CLASSES>
|
||||
<CONSTRUCTORS>
|
||||
<CONSTRUCTOR>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Instantiates a new ${name}.\n
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CONSTRUCTOR>
|
||||
</CONSTRUCTORS>
|
||||
<METHODS>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Gets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Sets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The entry point of application.\n
|
||||
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
* @param ${element.parameterList.parameters[0].name} the input arguments\n
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* ${name}<#if isNotVoid> ${return}</#if>.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${return}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
</METHODS>
|
||||
<FIELDS>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.+static.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The constant ${element.getName()}.\n
|
||||
*/</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isInterface()>
|
||||
* The constant ${element.getName()}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if> */</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isEnum()>
|
||||
*${name} ${typeName}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if>*/</VALUE>
|
||||
</FIELD>
|
||||
</FIELDS>
|
||||
</TEMPLATES>
|
||||
</component>
|
||||
</project>
|
7
.idea/libraries/bld.xml
generated
7
.idea/libraries/bld.xml
generated
|
@ -2,11 +2,12 @@
|
|||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5-sources.jar!/" />
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
|
@ -14,4 +15,4 @@
|
|||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
||||
</component>
|
||||
|
|
4
.idea/libraries/compile.xml
generated
4
.idea/libraries/compile.xml
generated
|
@ -7,7 +7,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
.idea/libraries/runtime.xml
generated
4
.idea/libraries/runtime.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
.idea/libraries/test.xml
generated
4
.idea/libraries/test.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
13
.idea/misc.xml
generated
13
.idea/misc.xml
generated
|
@ -1,3 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<pattern value="rife.bld.extension.CheckstyleOperationBuild" />
|
||||
|
@ -8,6 +9,18 @@
|
|||
<option name="customRuleSets">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/config/pmd.xml" />
|
||||
<option value="K:\java\semver\config\pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../bld-generated-version/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../bld-pitest/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../bld-jacoco-report/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../bld-exec/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../bld-testng/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-generated-version/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-pitest/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-jacoco-report/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-checkstyle/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-exec/config/pmd.xml" />
|
||||
<option value="$PROJECT_DIR$/../../bld-testng/config/pmd.xml" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="skipTestSources" value="false" />
|
||||
|
|
9
.vscode/launch.json
vendored
9
.vscode/launch.json
vendored
|
@ -5,7 +5,14 @@
|
|||
"type": "java",
|
||||
"name": "Run Tests",
|
||||
"request": "launch",
|
||||
"mainClass": "rife.bld.extension.CheckstyleOperationTest"
|
||||
"mainClass": "org.junit.platform.console.ConsoleLauncher",
|
||||
"args": [
|
||||
"--details=verbose",
|
||||
"--scan-classpath",
|
||||
"--disable-banner",
|
||||
"--disable-ansi-colors",
|
||||
"--exclude-engine=junit-platform-suite",
|
||||
"--exclude-engine=junit-vintage"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
|
@ -3,13 +3,14 @@
|
|||
"src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/bld/java"
|
||||
"src/test/resources",
|
||||
"src/bld/java",
|
||||
"src/bld/resources"
|
||||
],
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.project.referencedLibraries": [
|
||||
"${HOME}/.bld/dist/bld-1.7.5.jar",
|
||||
"lib/compile/*.jar",
|
||||
"lib/runtime/*.jar",
|
||||
"lib/test/*.jar"
|
||||
]
|
||||
"${HOME}/.bld/dist/bld-2.2.1.jar",
|
||||
"lib/**/*.jar"
|
||||
],
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
||||
|
|
28
README.md
28
README.md
|
@ -1,13 +1,21 @@
|
|||
# [Checkstyle](https://checkstyle.sourceforge.io/) Extension for [b<span style="color:orange">l</span>d](https://rife2.com/bldb)
|
||||
# [Checkstyle](https://checkstyle.sourceforge.io/) Extension for [b<span style="color:orange">l</span>d](https://rife2.com/bld)
|
||||
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
|
||||
[](https://rife2.com/bld)
|
||||
[](https://rife2.com/bld)
|
||||
[](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-checkstyle)
|
||||
[](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-checkstyle)
|
||||
[](https://github.com/rife2/bld-checkstyle/actions/workflows/bld.yml)
|
||||
|
||||
To install, please refer to the [extensions documentation](https://github.com/rife2/bld/wiki/Extensions).
|
||||
To install the latest version, add the following to the `lib/bld/bld-wrapper.properties` file:
|
||||
|
||||
```properties
|
||||
bld.extension-checkstyle=com.uwyn.rife2:bld-checkstyle
|
||||
```
|
||||
|
||||
For more information, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) documentation.
|
||||
|
||||
## Check Source Code with Checkstyle
|
||||
|
||||
To check your code with Chesktyle, include the following in your build file:
|
||||
|
||||
|
@ -21,19 +29,21 @@ public void checkstyle() throws Exception {
|
|||
}
|
||||
```
|
||||
|
||||
```
|
||||
```console
|
||||
./bld checkstyle
|
||||
```
|
||||
|
||||
- [View Examples](https://github.com/rife2/bld-checkstyle/blob/master/examples/src/bld/java/com/example/)
|
||||
|
||||
Please check the [CheckstyleOperation documentation](https://rife2.github.io/bld-checkstyle/rife/bld/extension/CheckstyleOperation.html#method-summary) for all available configuration options.
|
||||
Please check the [CheckstyleOperation documentation](https://rife2.github.io/bld-checkstyle/rife/bld/extension/CheckstyleOperation.html#method-summary)
|
||||
for all available configuration options.
|
||||
|
||||
### Checkstyle Dependency
|
||||
## Checkstyle Dependency
|
||||
|
||||
Don't forget to add a Checkstyle `test` dependency to your build file, as it is not provided by the extension. For example:
|
||||
Don't forget to add a Checkstyle `test` dependency to your build file, as it is
|
||||
not provided by the extension. For example:
|
||||
|
||||
```java
|
||||
repositories = List.of(MAVEN_CENTRAL);
|
||||
scope(test).include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 12, 2)));
|
||||
|
||||
scope(test).include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 23, 0)));
|
||||
```
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<!-- BEST PRACTICES -->
|
||||
<rule ref="category/java/bestpractices.xml">
|
||||
<exclude name="AvoidPrintStackTrace"/>
|
||||
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
|
||||
<exclude name="JUnitTestContainsTooManyAsserts"/>
|
||||
<exclude name="GuardLogStatement"/>
|
||||
<exclude name="UnitTestContainsTooManyAsserts"/>
|
||||
<exclude name="UnitTestShouldUseTestAnnotation"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/MissingOverride">
|
||||
|
@ -19,12 +19,13 @@
|
|||
</properties>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- CODE STYLE -->
|
||||
<rule ref="category/java/codestyle.xml">
|
||||
<exclude name="AtLeastOneConstructor"/>
|
||||
<exclude name="ClassNamingConventions"/>
|
||||
<exclude name="ConfusingTernary"/>
|
||||
<exclude name="CommentDefaultAccessModifier"/>
|
||||
<exclude name="ConfusingTernary"/>
|
||||
<exclude name="FieldNamingConventions"/>
|
||||
<exclude name="LocalVariableCouldBeFinal"/>
|
||||
<exclude name="LongVariable"/>
|
||||
|
@ -34,8 +35,9 @@
|
|||
<exclude name="ShortClassName"/>
|
||||
<exclude name="ShortMethodName"/>
|
||||
<exclude name="ShortVariable"/>
|
||||
<exclude name="UselessParentheses"/>
|
||||
<exclude name="UseExplicitTypes"/>
|
||||
<exclude name="UseUnderscoresInNumericLiterals"/>
|
||||
<exclude name="UselessParentheses"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/codestyle.xml/UnnecessaryImport">
|
||||
|
@ -51,8 +53,6 @@
|
|||
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
|
||||
<exclude name="CognitiveComplexity"/>
|
||||
<exclude name="CyclomaticComplexity"/>
|
||||
<exclude name="ExcessiveClassLength"/>
|
||||
<exclude name="ExcessiveMethodLength"/>
|
||||
<exclude name="ExcessiveParameterList"/>
|
||||
<exclude name="ExcessivePublicCount"/>
|
||||
<exclude name="GodClass"/>
|
||||
|
@ -106,4 +106,4 @@
|
|||
<!-- SECURITY -->
|
||||
<rule ref="category/java/security.xml">
|
||||
</rule>
|
||||
</ruleset>
|
||||
</ruleset>
|
||||
|
|
1
examples/.idea/.name
generated
Normal file
1
examples/.idea/.name
generated
Normal file
|
@ -0,0 +1 @@
|
|||
bld-checkstyle-examples
|
7
examples/.idea/libraries/bld.xml
generated
7
examples/.idea/libraries/bld.xml
generated
|
@ -2,11 +2,12 @@
|
|||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-1.7.5-sources.jar!/" />
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
|
@ -14,4 +15,4 @@
|
|||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
||||
</component>
|
||||
|
|
4
examples/.idea/libraries/compile.xml
generated
4
examples/.idea/libraries/compile.xml
generated
|
@ -7,7 +7,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
examples/.idea/libraries/runtime.xml
generated
4
examples/.idea/libraries/runtime.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
4
examples/.idea/libraries/test.xml
generated
4
examples/.idea/libraries/test.xml
generated
|
@ -8,7 +8,7 @@
|
|||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
7
examples/.idea/misc.xml
generated
7
examples/.idea/misc.xml
generated
|
@ -1,5 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<pattern value="com.example.ExamplesBuild" method="checkstyle" />
|
||||
<pattern value="com.example.ExamplesBuild" />
|
||||
</component>
|
||||
<component name="PDMPlugin">
|
||||
<option name="customRuleSets">
|
||||
<list>
|
||||
|
@ -11,4 +14,4 @@
|
|||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build" />
|
||||
</component>
|
||||
</project>
|
||||
</project>
|
10
examples/.vscode/settings.json
vendored
10
examples/.vscode/settings.json
vendored
|
@ -3,13 +3,13 @@
|
|||
"src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/bld/java"
|
||||
"src/test/resources",
|
||||
"src/bld/java",
|
||||
"src/bld/resources"
|
||||
],
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.project.referencedLibraries": [
|
||||
"${HOME}/.bld/dist/bld-1.7.5.jar",
|
||||
"lib/compile/*.jar",
|
||||
"lib/runtime/*.jar",
|
||||
"lib/test/*.jar"
|
||||
"${HOME}/.bld/dist/bld-2.2.1.jar",
|
||||
"lib/**/*.jar"
|
||||
]
|
||||
}
|
||||
|
|
6
examples/README.md
Normal file
6
examples/README.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Compile and Run Checkstyle
|
||||
|
||||
```console
|
||||
./bld compile checkstyle
|
||||
```
|
||||
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.extensions=com.uwyn.rife2:bld-checkstyle:0.9.0-SNAPSHOT
|
||||
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_RELEASES
|
||||
bld.downloadLocation=
|
||||
bld.extension-checkstyle=com.uwyn.rife2:bld-checkstyle:1.0.14
|
||||
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.sourceDirectories=
|
||||
bld.version=1.7.5
|
||||
bld.version=2.2.1
|
||||
|
|
|
@ -5,6 +5,9 @@ import rife.bld.BuildCommand;
|
|||
import rife.bld.extension.CheckstyleOperation;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.logging.ConsoleHandler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
|
||||
import static rife.bld.dependencies.Scope.*;
|
||||
|
@ -16,19 +19,33 @@ public class ExamplesBuild extends BaseProject {
|
|||
mainClass = "com.example.ExamplesMain";
|
||||
version = version(0, 1, 0);
|
||||
|
||||
javaRelease = 17;
|
||||
|
||||
autoDownloadPurge = true;
|
||||
downloadSources = true;
|
||||
|
||||
repositories = List.of(MAVEN_CENTRAL);
|
||||
|
||||
scope(test).include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 12, 4)));
|
||||
scope(test).include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 23, 0)));
|
||||
|
||||
testOperation().mainClass("com.example.ExamplesTest");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Enable detailed logging for the extensions
|
||||
var level = Level.ALL;
|
||||
var logger = Logger.getLogger("rife.bld.extension");
|
||||
var consoleHandler = new ConsoleHandler();
|
||||
|
||||
consoleHandler.setLevel(level);
|
||||
logger.addHandler(consoleHandler);
|
||||
logger.setLevel(level);
|
||||
logger.setUseParentHandlers(false);
|
||||
|
||||
new ExamplesBuild().start(args);
|
||||
}
|
||||
|
||||
@BuildCommand(summary = "Check code style")
|
||||
@BuildCommand(summary = "Check code style using Sun coding conventions")
|
||||
public void checkstyle() throws Exception {
|
||||
new CheckstyleOperation()
|
||||
.fromProject(this)
|
||||
|
@ -36,4 +53,11 @@ public class ExamplesBuild extends BaseProject {
|
|||
.execute();
|
||||
}
|
||||
|
||||
}
|
||||
@BuildCommand(value = "checkstyle-custom", summary = "Check code style using custom coding conventions")
|
||||
public void checkstyleCustom() throws Exception {
|
||||
new CheckstyleOperation()
|
||||
.fromProject(this)
|
||||
.configurationFile("src/test/resources/checkstyle.xml")
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
|
10
examples/src/test/resources/checkstyle.xml
Normal file
10
examples/src/test/resources/checkstyle.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE module PUBLIC
|
||||
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
||||
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport">
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
</module>
|
||||
</module>
|
Binary file not shown.
|
@ -1,8 +1,8 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.2
|
||||
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.0
|
||||
bld.repositories=MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.downloadLocation=
|
||||
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.5
|
||||
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.2
|
||||
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.sourceDirectories=
|
||||
bld.version=1.7.5
|
||||
bld.version=2.2.1
|
||||
|
|
16
scripts/checkcliargs.sh
Executable file
16
scripts/checkcliargs.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
main="com.puppycrawl.tools.checkstyle.Main"
|
||||
new=/tmp/checkcliargs-new
|
||||
old=/tmp/checkcliargs-old
|
||||
|
||||
java -cp "lib/test/*" $main --help >$new
|
||||
java -cp "examples/lib/test/*" $main --help >$old
|
||||
|
||||
if [ "$1" == "-v" ]; then
|
||||
code --wait --diff $old $new
|
||||
else
|
||||
diff $old $new
|
||||
fi
|
||||
|
||||
rm -rf $new $old
|
6
scripts/cliargs.sh
Executable file
6
scripts/cliargs.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
java -cp "lib/test/*" com.puppycrawl.tools.checkstyle.Main --help |\
|
||||
grep "^ -.*" |\
|
||||
sed -e "s/ -/-/" -e "s/[,=].*//" -e '/-V/d' -e '/-h/d' |\
|
||||
sort > "src/test/resources/checkstyle-args.txt"
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023 the original author or authors.
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,53 +22,65 @@ import rife.bld.publish.PublishDeveloper;
|
|||
import rife.bld.publish.PublishLicense;
|
||||
import rife.bld.publish.PublishScm;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
|
||||
import static rife.bld.dependencies.Repository.RIFE2_RELEASES;
|
||||
import static rife.bld.dependencies.Scope.*;
|
||||
import static rife.bld.dependencies.Repository.*;
|
||||
import static rife.bld.dependencies.Scope.compile;
|
||||
import static rife.bld.dependencies.Scope.test;
|
||||
import static rife.bld.operations.JavadocOptions.DocLinkOption.NO_MISSING;
|
||||
|
||||
public class CheckstyleOperationBuild extends Project {
|
||||
public CheckstyleOperationBuild() {
|
||||
pkg = "rife.bld.extension";
|
||||
name = "CheckstyleOperation";
|
||||
version = version(0, 9, 0, "SNAPSHOT");
|
||||
version = version(1, 0, 15, "SNAPSHOT");
|
||||
|
||||
javaRelease = 17;
|
||||
|
||||
downloadSources = true;
|
||||
autoDownloadPurge = true;
|
||||
repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES);
|
||||
|
||||
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
|
||||
|
||||
scope(compile)
|
||||
.include(dependency("com.uwyn.rife2", "bld", version(1, 7, 5)));
|
||||
.include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1)));
|
||||
scope(test)
|
||||
.include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 12, 4)))
|
||||
.include(dependency("org.jsoup", "jsoup", version(1, 16, 2)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 0)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 0)))
|
||||
.include(dependency("org.assertj", "assertj-core", version(3, 24, 2)));
|
||||
.include(dependency("com.puppycrawl.tools", "checkstyle", version(10, 23, 0)))
|
||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1)))
|
||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1)))
|
||||
.include(dependency("org.assertj", "assertj-core", version(3, 27, 3)));
|
||||
|
||||
javadocOperation()
|
||||
.javadocOptions()
|
||||
.author()
|
||||
.docLint(NO_MISSING)
|
||||
.link("https://rife2.github.io/bld/")
|
||||
.link("https://rife2.github.io/rife2/");
|
||||
|
||||
publishOperation()
|
||||
.repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
|
||||
.repository(repository("github"))
|
||||
.info()
|
||||
.groupId("com.uwyn.rife2")
|
||||
.artifactId("bld-checkstyle")
|
||||
.description("bld Checkstyle Extensions")
|
||||
.description("bld Checkstyle Extension")
|
||||
.url("https://github.com/rife2/bld-checkstyle")
|
||||
.developer(new PublishDeveloper().id("ethauvin").name("Erik C. Thauvin").email("erik@thauvin.net")
|
||||
.url("https://erik.thauvin.net/"))
|
||||
.license(new PublishLicense().name("The Apache License, Version 2.0")
|
||||
.url("http://www.apache.org/licenses/LICENSE-2.0.txt"))
|
||||
.scm(new PublishScm().connection("scm:git:https://github.com/rife2/bld-checkstyle.git")
|
||||
.developer(new PublishDeveloper()
|
||||
.id("ethauvin")
|
||||
.name("Erik C. Thauvin")
|
||||
.email("erik@thauvin.net")
|
||||
.url("https://erik.thauvin.net/")
|
||||
)
|
||||
.license(new PublishLicense()
|
||||
.name("The Apache License, Version 2.0")
|
||||
.url("https://www.apache.org/licenses/LICENSE-2.0.txt")
|
||||
)
|
||||
.scm(new PublishScm()
|
||||
.connection("scm:git:https://github.com/rife2/bld-checkstyle.git")
|
||||
.developerConnection("scm:git:git@github.com:rife2/bld-checkstyle.git")
|
||||
.url("https://github.com/rife2/bld-checkstyle"))
|
||||
.url("https://github.com/rife2/bld-checkstyle")
|
||||
)
|
||||
.signKey(property("sign.key"))
|
||||
.signPassphrase(property("sign.passphrase"));
|
||||
}
|
||||
|
@ -77,19 +89,24 @@ public class CheckstyleOperationBuild extends Project {
|
|||
new CheckstyleOperationBuild().start(args);
|
||||
}
|
||||
|
||||
@BuildCommand(summary = "Generates JaCoCo Reports")
|
||||
public void jacoco() throws IOException {
|
||||
new JacocoReportOperation()
|
||||
.fromProject(this)
|
||||
.execute();
|
||||
}
|
||||
|
||||
@BuildCommand(summary = "Runs PMD analysis")
|
||||
public void pmd() {
|
||||
public void pmd() throws Exception {
|
||||
new PmdOperation()
|
||||
.fromProject(this)
|
||||
.failOnViolation(true)
|
||||
.ruleSets("config/pmd.xml")
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void test() throws Exception {
|
||||
var os = System.getProperty("os.name");
|
||||
if (os != null && os.toLowerCase(Locale.US).contains("linux")) {
|
||||
new ExecOperation()
|
||||
.fromProject(this)
|
||||
.command("scripts/cliargs.sh")
|
||||
.execute();
|
||||
}
|
||||
super.test();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023 the original author or authors.
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -17,11 +17,16 @@
|
|||
package rife.bld.extension;
|
||||
|
||||
import rife.bld.BaseProject;
|
||||
import rife.bld.extension.checkstyle.OutputFormat;
|
||||
import rife.bld.operations.AbstractProcessOperation;
|
||||
import rife.bld.operations.exceptions.ExitStatusException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
|
@ -32,22 +37,23 @@ import java.util.logging.Logger;
|
|||
*/
|
||||
public class CheckstyleOperation extends AbstractProcessOperation<CheckstyleOperation> {
|
||||
private static final Logger LOGGER = Logger.getLogger(CheckstyleOperation.class.getName());
|
||||
/**
|
||||
* The command line options.
|
||||
*/
|
||||
protected final Map<String, String> options = new ConcurrentHashMap<>();
|
||||
private final Collection<String> excludeRegex_ = new ArrayList<>();
|
||||
private final Collection<File> exclude_ = new ArrayList<>();
|
||||
private final Map<String, String> options_ = new ConcurrentHashMap<>();
|
||||
private final Set<File> sourceDir_ = new TreeSet<>();
|
||||
|
||||
/**
|
||||
* The source files(s) or folder(s).
|
||||
*/
|
||||
protected final Set<String> sourceDirs = new TreeSet<>();
|
||||
private BaseProject project_;
|
||||
|
||||
/**
|
||||
* Shows Abstract Syntax Tree(AST) branches that match given XPath query.
|
||||
*
|
||||
* @param xPathQuery the xPath query
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation branchMatchingXpath(String xPathQuery) {
|
||||
options.put("-b", xPathQuery);
|
||||
if (isNotBlank(xPathQuery)) {
|
||||
options_.put("-b", xPathQuery);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -55,88 +61,216 @@ public class CheckstyleOperation extends AbstractProcessOperation<CheckstyleOper
|
|||
* Specifies the location of the file that defines the configuration modules. The location can either be a
|
||||
* filesystem location, or a name passed to the {@link ClassLoader#getResource(String) ClassLoader.getResource() }
|
||||
* method. A configuration file is required.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation configurationFile(String file) {
|
||||
options.put("-c", file);
|
||||
if (isNotBlank(file)) {
|
||||
options_.put("-c", file);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints all debug logging of CheckStyle utility.
|
||||
* Specifies the location of the file that defines the configuration modules. The location can either be a
|
||||
* filesystem location, or a name passed to the {@link ClassLoader#getResource(String) ClassLoader.getResource() }
|
||||
* method. A configuration file is required.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation configurationFile(File file) {
|
||||
return configurationFile(file.getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the location of the file that defines the configuration modules. The location can either be a
|
||||
* filesystem location, or a name passed to the {@link ClassLoader#getResource(String) ClassLoader.getResource() }
|
||||
* method. A configuration file is required.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation configurationFile(Path file) {
|
||||
return configurationFile(file.toFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints all debug logging of Checkstyle utility.
|
||||
*
|
||||
* @param isDebug {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation debug(boolean isDebug) {
|
||||
if (isDebug) {
|
||||
options.put("-d", "");
|
||||
options_.put("-d", "");
|
||||
} else {
|
||||
options.remove("-d");
|
||||
options_.remove("-d");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file to exclude from CheckStyle. The path can be the full, absolute path, or relative to the current
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @see #sourceDir(Collection)
|
||||
* @param path one or more paths
|
||||
* @return the checkstyle operation
|
||||
* @see #excludeStrings(Collection)
|
||||
*/
|
||||
public CheckstyleOperation exclude(String... path) {
|
||||
for (var p : path) {
|
||||
options.put("-e", p);
|
||||
}
|
||||
return this;
|
||||
return excludeStrings(List.of(path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file to exclude from CheckStyle. The path can be the full, absolute path, or relative to the current
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @see #exclude(String...)
|
||||
* @param path one or more paths
|
||||
* @return the checkstyle operation
|
||||
* @see #exclude(Collection)
|
||||
*/
|
||||
public CheckstyleOperation exclude(Collection<String> paths) {
|
||||
for (var p : paths) {
|
||||
options.put("-e", p);
|
||||
}
|
||||
public CheckstyleOperation exclude(File... path) {
|
||||
return exclude(List.of(path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @param path one or more paths
|
||||
* @return the checkstyle operation
|
||||
* @see #excludePaths(Collection)
|
||||
*/
|
||||
public CheckstyleOperation exclude(Path... path) {
|
||||
return excludePaths(List.of(path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @param paths the paths
|
||||
* @return the checkstyle operation
|
||||
* @see #exclude(File...)
|
||||
*/
|
||||
public CheckstyleOperation exclude(Collection<File> paths) {
|
||||
exclude_.addAll(paths);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file pattern to exclude from CheckStyle. Multiple excludes are allowed.
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @param paths the paths
|
||||
* @return the checkstyle operation
|
||||
* @see #exclude(Path...)
|
||||
*/
|
||||
public CheckstyleOperation excludedPathPattern(String pattern) {
|
||||
options.put("-x", pattern);
|
||||
public CheckstyleOperation excludePaths(Collection<Path> paths) {
|
||||
return exclude(paths.stream().map(Path::toFile).toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file pattern to exclude from Checkstyle. Multiple exclude are allowed.
|
||||
*
|
||||
* @param regex the pattern to exclude
|
||||
* @return the checkstyle operation
|
||||
* @see #excludeRegex(Collection)
|
||||
*/
|
||||
public CheckstyleOperation excludeRegex(String... regex) {
|
||||
return excludeRegex(List.of(regex));
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file pattern to exclude from Checkstyle. Multiple exclude are allowed.
|
||||
*
|
||||
* @param regex the patterns to exclude
|
||||
* @return the checkstyle operation
|
||||
* @see #excludeRegex(String...)
|
||||
*/
|
||||
public CheckstyleOperation excludeRegex(Collection<String> regex) {
|
||||
excludeRegex_.addAll(regex);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Directory/file to exclude from Checkstyle. The path can be the full, absolute path, or relative to the current
|
||||
* path. Multiple excludes are allowed.
|
||||
*
|
||||
* @param paths the paths
|
||||
* @return the checkstyle operation
|
||||
* @see #exclude(String...)
|
||||
*/
|
||||
public CheckstyleOperation excludeStrings(Collection<String> paths) {
|
||||
return exclude(paths.stream().map(File::new).toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() throws IOException, InterruptedException, ExitStatusException {
|
||||
if (project_ == null) {
|
||||
if (LOGGER.isLoggable(Level.SEVERE) && !silent()) {
|
||||
LOGGER.severe("A project must be specified.");
|
||||
}
|
||||
throw new ExitStatusException(ExitStatusException.EXIT_FAILURE);
|
||||
} else {
|
||||
super.execute();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Part of the {@link #execute} operation, constructs the command list
|
||||
* to use for building the process.
|
||||
*/
|
||||
@Override
|
||||
protected List<String> executeConstructProcessCommandList() {
|
||||
if (project_ == null) {
|
||||
LOGGER.severe("A project must be specified.");
|
||||
} else if (sourceDirs.isEmpty()) {
|
||||
sourceDirs.add(project_.srcMainJavaDirectory().getPath());
|
||||
sourceDirs.add(project_.srcTestJavaDirectory().getPath());
|
||||
}
|
||||
|
||||
final List<String> args = new ArrayList<>();
|
||||
args.add(javaTool());
|
||||
|
||||
args.add("-cp");
|
||||
args.add(String.format("%s:%s:%s:%s", Path.of(project_.libTestDirectory().getPath(), "*"),
|
||||
Path.of(project_.libCompileDirectory().getPath(), "*"), project_.buildMainDirectory(),
|
||||
project_.buildTestDirectory()));
|
||||
args.add("com.puppycrawl.tools.checkstyle.Main");
|
||||
|
||||
options.forEach((k, v) -> {
|
||||
args.add(k);
|
||||
if (!v.isEmpty()) {
|
||||
args.add(v);
|
||||
if (project_ != null) {
|
||||
if (sourceDir_.isEmpty()) {
|
||||
sourceDir_.add(project_.srcMainJavaDirectory());
|
||||
sourceDir_.add(project_.srcTestJavaDirectory());
|
||||
}
|
||||
});
|
||||
args.add(javaTool());
|
||||
|
||||
args.addAll(sourceDirs);
|
||||
args.add("-cp");
|
||||
args.add(String.format("%s%s%s%s%s%s%s", new File(project_.libTestDirectory(), "*"),
|
||||
File.pathSeparator, new File(project_.libCompileDirectory(), "*"), File.pathSeparator,
|
||||
project_.buildMainDirectory(), File.pathSeparator, project_.buildTestDirectory()));
|
||||
args.add("com.puppycrawl.tools.checkstyle.Main");
|
||||
|
||||
options_.forEach((k, v) -> {
|
||||
args.add(k);
|
||||
if (!v.isEmpty()) {
|
||||
args.add(v);
|
||||
}
|
||||
});
|
||||
|
||||
if (!exclude_.isEmpty()) {
|
||||
for (var e : exclude_) {
|
||||
if (e.exists()) {
|
||||
args.add("-e");
|
||||
args.add(e.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!excludeRegex_.isEmpty()) {
|
||||
for (var e : excludeRegex_) {
|
||||
if (isNotBlank(e)) {
|
||||
args.add("-x");
|
||||
args.add(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
args.addAll(sourceDir_.stream().map(File::getAbsolutePath).toList());
|
||||
|
||||
if (LOGGER.isLoggable(Level.FINE)) {
|
||||
LOGGER.log(Level.FINE, String.join(" ", args));
|
||||
}
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
|
@ -152,22 +286,31 @@ public class CheckstyleOperation extends AbstractProcessOperation<CheckstyleOper
|
|||
|
||||
/**
|
||||
* Allows ignored modules to be run.
|
||||
*
|
||||
* @param isAllowIgnoreModules {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation executeIgnoredModules(boolean isAllowIgnoreModules) {
|
||||
if (isAllowIgnoreModules) {
|
||||
options.put("-E", "");
|
||||
options_.put("-E", "");
|
||||
} else {
|
||||
options.remove("-E");
|
||||
options_.remove("-E");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the output format. Valid values: {@code xml}, {@code sarif}, {@code plain} for the XML, sarif and
|
||||
* default logger respectively. Defaults to {@code plain}.
|
||||
* Specifies the output format. Valid values: {@link OutputFormat#XML},
|
||||
* {@link OutputFormat#SARIF}, {@link OutputFormat#PLAIN} for the XML, sarif and default logger
|
||||
* respectively.
|
||||
* <p>
|
||||
* Defaults to {@link OutputFormat#PLAIN}.
|
||||
*
|
||||
* @param format the output format
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation format(String format) {
|
||||
options.put("-f", format);
|
||||
public CheckstyleOperation format(OutputFormat format) {
|
||||
options_.put("-f", format.label.toLowerCase());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -175,128 +318,279 @@ public class CheckstyleOperation extends AbstractProcessOperation<CheckstyleOper
|
|||
* Generates to output a suppression xml to use to suppress all violations from user's config. Instead of printing
|
||||
* every violation, all violations will be caught and single suppressions xml file will be printed out.
|
||||
* Used only with the {@link #configurationFile(String) configurationFile} option. Output location can be specified
|
||||
* with the {@link #output(String) output} option.
|
||||
* with the {@link #outputPath(String) output} option.
|
||||
*
|
||||
* @param xPathSuppression {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation generateXpathSuppression(boolean xPathSuppression) {
|
||||
if (xPathSuppression) {
|
||||
options.put("-g", "");
|
||||
options_.put("-g", "");
|
||||
} else {
|
||||
options.remove("-g");
|
||||
options_.remove("-g");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determines if a string is not blank.
|
||||
*/
|
||||
private boolean isNotBlank(String s) {
|
||||
return s != null && !s.isBlank();
|
||||
}
|
||||
|
||||
/**
|
||||
* This option is used to print the Parse Tree of the Javadoc comment. The file has to contain only Javadoc comment
|
||||
* content excluding '/**' and '*/' at the beginning and at the end respectively. It can only be used on a
|
||||
* single file and cannot be combined with other options.
|
||||
*
|
||||
* @param isTree {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation javadocTree(boolean isTree) {
|
||||
if (isTree) {
|
||||
options_.put("-j", "");
|
||||
} else {
|
||||
options_.remove("-j");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints Parse Tree of the Javadoc comment. The file have to contain <b>only Javadoc comment content</b>
|
||||
* without including '/**' and '*/' at the beginning and at the end respectively. The option cannot
|
||||
* be used other options and requires exactly one file to run on to be specified.
|
||||
* Returns the command line options.
|
||||
*
|
||||
* @return the command line options
|
||||
*/
|
||||
public CheckstyleOperation javadocTree(boolean isTree) {
|
||||
if (isTree) {
|
||||
options.put("-j", "");
|
||||
} else {
|
||||
options.remove("-j");
|
||||
public Map<String, String> options() {
|
||||
return options_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the output file.
|
||||
* <p>
|
||||
* Defaults to stdout.
|
||||
*
|
||||
* @param file the output file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation outputPath(String file) {
|
||||
if (isNotBlank(file)) {
|
||||
options_.put("-o", file);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the output file.
|
||||
* <p>
|
||||
* Defaults to stdout.
|
||||
*
|
||||
* @param file the output file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation outputPath(File file) {
|
||||
return outputPath(file.getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the output file.
|
||||
* <p>
|
||||
* Defaults to stdout.
|
||||
*
|
||||
* @param file the output file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation outputPath(Path file) {
|
||||
return outputPath(file.toFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the property files to load.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation propertiesFile(String file) {
|
||||
if (isNotBlank(file)) {
|
||||
options_.put("-p", file);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the property files to load.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation propertiesFile(File file) {
|
||||
return propertiesFile(file.getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the property files to load.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation propertiesFile(Path file) {
|
||||
return propertiesFile(file.toFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dir one or more directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDirStrings(Collection)
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(String... dir) {
|
||||
return sourceDirStrings(List.of(dir));
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dir one or more directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDir(Collection)
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(File... dir) {
|
||||
return sourceDir(List.of(dir));
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dir one or more directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDirPaths(Collection)
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(Path... dir) {
|
||||
return sourceDirPaths(List.of(dir));
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dirs the directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDir(File...)
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(Collection<File> dirs) {
|
||||
sourceDir_.addAll(dirs);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the file(s) or folders(s) containing the sources files to check
|
||||
*
|
||||
* @return the files or directories
|
||||
*/
|
||||
public Set<File> sourceDir() {
|
||||
return sourceDir_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dirs the directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDir(Path...)
|
||||
*/
|
||||
public CheckstyleOperation sourceDirPaths(Collection<Path> dirs) {
|
||||
return sourceDir(dirs.stream().map(Path::toFile).toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @param dirs the directories
|
||||
* @return the checkstyle operation
|
||||
* @see #sourceDir(String...)
|
||||
*/
|
||||
public CheckstyleOperation sourceDirStrings(Collection<String> dirs) {
|
||||
return sourceDir(dirs.stream().map(File::new).toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints xpath suppressions at the file's line and column position. Argument is the line and column number
|
||||
* (separated by a {@code :} ) in the file that the suppression should be generated for. The option cannot be
|
||||
* used with other options and requires exactly one file to run on to be specified.
|
||||
* <p>
|
||||
* <b>ATTENTION</b>: generated result will have few queries, joined by pipe(|). Together they will match all AST nodes
|
||||
* on specified line and column. You need to choose only one and recheck that it works. Usage of all of them is also
|
||||
* ok, but might result in undesirable matching and suppress other issues.
|
||||
*/
|
||||
public CheckstyleOperation lineColumn(String lineColumn) {
|
||||
options.put("-s", lineColumn);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the output file. Defaults to stdout.
|
||||
*/
|
||||
public CheckstyleOperation output(String file) {
|
||||
options.put("-o", file);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the property files to load.
|
||||
*/
|
||||
public CheckstyleOperation propertiesFile(String file) {
|
||||
options.put("-p", file);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specified the file(s) or folder(s) containing the source files to check.
|
||||
* Note that the generated result will have few queries, joined by pipe({@code |}). Together they will match all
|
||||
* AST nodes on specified line and column. You need to choose only one and recheck that it works. Usage of all of
|
||||
* them is also ok, but might result in undesirable matching and suppress other issues.
|
||||
*
|
||||
* @see #sourceDir(Collection)
|
||||
* @param lineColumnNumber the line column number
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(String... dir) {
|
||||
sourceDirs.addAll(Arrays.asList(dir));
|
||||
public CheckstyleOperation suppressionLineColumnNumber(String lineColumnNumber) {
|
||||
if (isNotBlank(lineColumnNumber)) {
|
||||
options_.put("-s", lineColumnNumber);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specified the file(s) or folder(s) containing the source files to check.
|
||||
*
|
||||
* @see #sourceDir(String...)
|
||||
*/
|
||||
public CheckstyleOperation sourceDir(Collection<String> dirs) {
|
||||
sourceDirs.addAll(dirs);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the length of the tab character. Used only with the {@link #lineColumn(String) lineColum} option.
|
||||
* Sets the length of the tab character. Used only with the
|
||||
* {@link #suppressionLineColumnNumber(String) suppressionLineColumnNumber} option.
|
||||
* <p>
|
||||
* Default value is {@code 8}.
|
||||
*
|
||||
* @param length the length
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation tabWith(int length) {
|
||||
options.put("-w", String.valueOf(length));
|
||||
options_.put("-w", String.valueOf(length));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints Abstract Syntax Tree(AST) of the checked file. The option cannot be used other options and requires
|
||||
* exactly one file to run on to be specified.
|
||||
* This option is used to display the Abstract Syntax Tree (AST) without any comments of the specified file. It can
|
||||
* only be used on a single file and cannot be combined with other options.
|
||||
*
|
||||
* @param isTree {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation tree(boolean isTree) {
|
||||
if (isTree) {
|
||||
options.put("-t", "");
|
||||
options_.put("-t", "");
|
||||
} else {
|
||||
options.remove("-t");
|
||||
options_.remove("-t");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints Abstract Syntax Tree(AST) with comment nodes of the checked file. The option cannot be used with other
|
||||
* options and requires exactly one file to run on to be specified.
|
||||
* This option is used to display the Abstract Syntax Tree (AST) with comment nodes excluding Javadoc of the
|
||||
* specified file. It can only be used on a single file and cannot be combined with other options.
|
||||
*
|
||||
* @param isTree {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation treeWithComments(boolean isTree) {
|
||||
if (isTree) {
|
||||
options.put("-T", "");
|
||||
options_.put("-T", "");
|
||||
} else {
|
||||
options.remove("-T");
|
||||
options_.remove("-T");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints Abstract Syntax Tree(AST) with Javadoc nodes and comment nodes of the checked file. Attention that line
|
||||
* number and columns will not be the same as it is a file due to the fact that each javadoc comment is parsed
|
||||
* separately from java file. The option cannot be used with other options and requires exactly one file to run on
|
||||
* to be specified.
|
||||
* This option is used to display the Abstract Syntax Tree (AST) with Javadoc nodes of the specified file. It can
|
||||
* only be used on a single file and cannot be combined with other options.
|
||||
*
|
||||
* @param isTree {@code true} or {@code false}
|
||||
* @return the checkstyle operation
|
||||
*/
|
||||
public CheckstyleOperation treeWithJavadoc(boolean isTree) {
|
||||
if (isTree) {
|
||||
options.put("-J", "");
|
||||
options_.put("-J", "");
|
||||
} else {
|
||||
options.remove("-J");
|
||||
options_.remove("-J");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package rife.bld.extension.checkstyle;
|
||||
|
||||
/**
|
||||
* The Checkstyle output format for XML, sarif and default (plain) logger.
|
||||
*/
|
||||
public enum OutputFormat {
|
||||
XML("xml"),
|
||||
SARIF("sarif"),
|
||||
PLAIN("plain");
|
||||
|
||||
public final String label;
|
||||
|
||||
/**
|
||||
* Sets the label of this output format.
|
||||
*/
|
||||
OutputFormat(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023 the original author or authors.
|
||||
* Copyright 2023-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,58 +16,150 @@
|
|||
|
||||
package rife.bld.extension;
|
||||
|
||||
import org.assertj.core.api.AutoCloseableSoftAssertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.EnabledOnOs;
|
||||
import org.junit.jupiter.api.condition.OS;
|
||||
import rife.bld.BaseProject;
|
||||
import rife.bld.Project;
|
||||
import rife.bld.WebProject;
|
||||
import rife.bld.extension.checkstyle.OutputFormat;
|
||||
import rife.bld.operations.exceptions.ExitStatusException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.logging.ConsoleHandler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
||||
|
||||
class CheckstyleOperationTest {
|
||||
public static final String SRC_MAIN_JAVA = "src/main/java";
|
||||
public static final String SRC_TEST_JAVA = "src/test/java";
|
||||
private static final String ADD = "add";
|
||||
private static final String BAR = "bar";
|
||||
private static final String FOO = "foo";
|
||||
private static final String REMOVE = "remove";
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
var level = Level.ALL;
|
||||
var logger = Logger.getLogger("rife.bld.extension");
|
||||
var consoleHandler = new ConsoleHandler();
|
||||
consoleHandler.setLevel(level);
|
||||
logger.addHandler(consoleHandler);
|
||||
logger.setLevel(level);
|
||||
logger.setUseParentHandlers(false);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void branchMatchingXpath() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).branchMatchingXpath(FOO);
|
||||
assertThat(op.options.get("-b")).isEqualTo(FOO);
|
||||
assertThat(op.options().get("-b")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnabledOnOs(OS.LINUX)
|
||||
void checkAllParameters() throws IOException {
|
||||
var args = Files.readAllLines(Paths.get("src", "test", "resources", "checkstyle-args.txt"));
|
||||
|
||||
assertThat(args).isNotEmpty();
|
||||
|
||||
var params = new CheckstyleOperation()
|
||||
.fromProject(new Project())
|
||||
.branchMatchingXpath("xpath")
|
||||
.debug(true)
|
||||
.configurationFile(new File("config"))
|
||||
.exclude(SRC_MAIN_JAVA)
|
||||
.excludeRegex("regex")
|
||||
.executeIgnoredModules(true)
|
||||
.format(OutputFormat.XML)
|
||||
.generateXpathSuppression(true)
|
||||
.javadocTree(true)
|
||||
.outputPath(new File("optionPath"))
|
||||
.propertiesFile(new File("properties"))
|
||||
.suppressionLineColumnNumber("12")
|
||||
.tabWith(1)
|
||||
.tree(true)
|
||||
.treeWithComments(true)
|
||||
.treeWithJavadoc(true)
|
||||
.executeConstructProcessCommandList();
|
||||
|
||||
try (var softly = new AutoCloseableSoftAssertions()) {
|
||||
for (var p : args) {
|
||||
var found = false;
|
||||
for (var a : params) {
|
||||
if (a.startsWith(p)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
softly.assertThat(found).as(p + " not found.").isTrue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void configurationFile() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).configurationFile(FOO);
|
||||
assertThat(op.options.get("-c")).isEqualTo(FOO);
|
||||
assertThat(op.options().get("-c")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void debug() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).debug(true);
|
||||
assertThat(op.options.containsKey("-d")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-d")).as(ADD).isTrue();
|
||||
op = op.debug(false);
|
||||
assertThat(op.options.containsKey("-d")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-d")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void exclude() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).exclude(FOO);
|
||||
assertThat(op.options.get("-e")).isEqualTo(FOO);
|
||||
op = new CheckstyleOperation().fromProject(new Project()).exclude(List.of(FOO));
|
||||
assertThat(op.options.get("-e")).as("as list").isEqualTo(FOO);
|
||||
var foo = new File(SRC_MAIN_JAVA);
|
||||
var bar = new File(SRC_TEST_JAVA);
|
||||
var e = "-e ";
|
||||
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).exclude(SRC_MAIN_JAVA, SRC_TEST_JAVA);
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("String...")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).excludeStrings(List.of(SRC_MAIN_JAVA, SRC_TEST_JAVA));
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("List(String...)")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).exclude(foo, bar);
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("File...")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).exclude(List.of(foo, bar));
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("List(File...)")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).exclude(foo.toPath(), bar.toPath());
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("Path...")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).excludePaths(List.of(foo.toPath(), bar.toPath()));
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("List(Path...)")
|
||||
.contains(e + foo.getAbsolutePath()).contains(e + bar.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void excludedPathPattern() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).excludedPathPattern(FOO);
|
||||
assertThat(op.options.get("-x")).isEqualTo(FOO);
|
||||
void excludeRegex() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).excludeRegex(FOO, BAR);
|
||||
var x = "-x ";
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).contains(x + FOO, x + BAR);
|
||||
|
||||
op = new CheckstyleOperation().fromProject(new Project()).excludeRegex(List.of(FOO, BAR));
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList())).as("as list").contains(x + FOO, x + BAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -76,9 +168,9 @@ class CheckstyleOperationTest {
|
|||
tmpFile.deleteOnExit();
|
||||
var op = new CheckstyleOperation()
|
||||
.fromProject(new WebProject())
|
||||
.sourceDir("src/main/java", "src/test/java")
|
||||
.configurationFile("src/test/resources/google_checks.xml")
|
||||
.output(tmpFile.getAbsolutePath());
|
||||
.sourceDir(SRC_MAIN_JAVA, SRC_TEST_JAVA)
|
||||
.configurationFile(Path.of("src/test/resources/google_checks.xml"))
|
||||
.outputPath(tmpFile.toPath());
|
||||
op.execute();
|
||||
assertThat(tmpFile).exists();
|
||||
}
|
||||
|
@ -91,7 +183,7 @@ class CheckstyleOperationTest {
|
|||
.propertiesFile("config/checkstyle.properties")
|
||||
.debug(true)
|
||||
.executeIgnoredModules(true)
|
||||
.sourceDir("src/main/java", "src/test/java");
|
||||
.sourceDir(SRC_MAIN_JAVA, SRC_TEST_JAVA);
|
||||
assertThat(String.join(" ", op.executeConstructProcessCommandList()))
|
||||
.startsWith("java -cp ")
|
||||
.endsWith(
|
||||
|
@ -100,15 +192,22 @@ class CheckstyleOperationTest {
|
|||
"-b xpath " +
|
||||
"-c config/checkstyle.xml " +
|
||||
"-d -E " +
|
||||
"src/main/java src/test/java");
|
||||
new File(SRC_MAIN_JAVA).getAbsolutePath() + " " +
|
||||
new File(SRC_TEST_JAVA).getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void executeIgnoredModules() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).executeIgnoredModules(true);
|
||||
assertThat(op.options.containsKey("-E")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-E")).as(ADD).isTrue();
|
||||
op = op.executeIgnoredModules(false);
|
||||
assertThat(op.options.containsKey("-E")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-E")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void executeNoProject() {
|
||||
var op = new CheckstyleOperation();
|
||||
assertThatCode(op::execute).isInstanceOf(ExitStatusException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -117,88 +216,115 @@ class CheckstyleOperationTest {
|
|||
tmpFile.deleteOnExit();
|
||||
var op = new CheckstyleOperation()
|
||||
.fromProject(new WebProject())
|
||||
.sourceDir(List.of("src/main/java", "src/test/java"))
|
||||
.sourceDir(SRC_MAIN_JAVA, SRC_TEST_JAVA)
|
||||
.configurationFile("src/test/resources/sun_checks.xml")
|
||||
.output(tmpFile.getAbsolutePath());
|
||||
.outputPath(tmpFile.getAbsolutePath());
|
||||
assertThatCode(op::execute).isInstanceOf(ExitStatusException.class);
|
||||
assertThat(tmpFile).exists();
|
||||
}
|
||||
|
||||
@Test
|
||||
void format() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).format(FOO);
|
||||
assertThat(op.options.get("-f")).isEqualTo(FOO);
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).format(OutputFormat.XML);
|
||||
assertThat(op.options().get("-f")).isEqualTo("xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateXpathSuppression() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).generateXpathSuppression(true);
|
||||
assertThat(op.options.containsKey("-g")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-g")).as(ADD).isTrue();
|
||||
op = op.generateXpathSuppression(false);
|
||||
assertThat(op.options.containsKey("-g")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-g")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void javadocTree() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).javadocTree(true);
|
||||
assertThat(op.options.containsKey("-j")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-j")).as(ADD).isTrue();
|
||||
op = op.javadocTree(false);
|
||||
assertThat(op.options.containsKey("-j")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-j")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void lineColumn() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).lineColumn(FOO);
|
||||
assertThat(op.options.get("-s")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void output() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).output(FOO);
|
||||
assertThat(op.options.get("-o")).isEqualTo(FOO);
|
||||
void outputPath() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).outputPath(FOO);
|
||||
assertThat(op.options().get("-o")).isEqualTo(FOO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void propertiesFile() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).propertiesFile(FOO);
|
||||
assertThat(op.options.get("-p")).isEqualTo(FOO);
|
||||
assertThat(op.options().get("-p")).isEqualTo(FOO);
|
||||
|
||||
var fooPath = Path.of(FOO);
|
||||
op = op.propertiesFile(fooPath);
|
||||
assertThat(op.options().get("-p")).isEqualTo(fooPath.toFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
@Test
|
||||
void sourceDir() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).sourceDir(FOO);
|
||||
assertThat(op.sourceDirs).contains(FOO);
|
||||
op = op.sourceDir(FOO, BAR);
|
||||
assertThat(op.sourceDirs).as("foo, bar").hasSize(2).contains(FOO).contains(BAR);
|
||||
var foo = new File(FOO);
|
||||
var bar = new File(BAR);
|
||||
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).sourceDir(FOO, BAR);
|
||||
assertThat(op.sourceDir()).as("String...").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
|
||||
op = op.sourceDirStrings(List.of(FOO, BAR));
|
||||
assertThat(op.sourceDir()).as("List(String...)").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
|
||||
op = op.sourceDir(foo, bar);
|
||||
assertThat(op.sourceDir()).as("File...").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
|
||||
op = op.sourceDir(List.of(foo, bar));
|
||||
assertThat(op.sourceDir()).as("List(File...)").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
|
||||
op = op.sourceDir(foo.toPath(), bar.toPath());
|
||||
assertThat(op.sourceDir()).as("Path...").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
|
||||
op = op.sourceDirPaths(List.of(foo.toPath(), bar.toPath()));
|
||||
assertThat(op.sourceDir()).as("List(Path...)").hasSize(2).contains(foo, bar);
|
||||
op.sourceDir().clear();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void suppressionLineColumnNumber() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).suppressionLineColumnNumber(FOO + ':' + BAR);
|
||||
assertThat(op.options().get("-s")).isEqualTo(FOO + ':' + BAR);
|
||||
}
|
||||
|
||||
@Test
|
||||
void tabWith() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).tabWith(9);
|
||||
assertThat(op.options.get("-w")).isEqualTo("9");
|
||||
assertThat(op.options().get("-w")).isEqualTo("9");
|
||||
}
|
||||
|
||||
@Test
|
||||
void tree() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).tree(true);
|
||||
assertThat(op.options.containsKey("-t")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-t")).as(ADD).isTrue();
|
||||
op = op.tree(false);
|
||||
assertThat(op.options.containsKey("-t")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-t")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void treeWithComments() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).treeWithComments(true);
|
||||
assertThat(op.options.containsKey("-T")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-T")).as(ADD).isTrue();
|
||||
op = op.treeWithComments(false);
|
||||
assertThat(op.options.containsKey("-T")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-T")).as(REMOVE).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void treeWithJavadoc() {
|
||||
var op = new CheckstyleOperation().fromProject(new Project()).treeWithJavadoc(true);
|
||||
assertThat(op.options.containsKey("-J")).as(ADD).isTrue();
|
||||
assertThat(op.options().containsKey("-J")).as(ADD).isTrue();
|
||||
op = op.treeWithJavadoc(false);
|
||||
assertThat(op.options.containsKey("-J")).as(REMOVE).isFalse();
|
||||
assertThat(op.options().containsKey("-J")).as(REMOVE).isFalse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
16
src/test/resources/checkstyle-args.txt
Normal file
16
src/test/resources/checkstyle-args.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
-b
|
||||
-c
|
||||
-d
|
||||
-e
|
||||
-E
|
||||
-f
|
||||
-g
|
||||
-j
|
||||
-J
|
||||
-o
|
||||
-p
|
||||
-s
|
||||
-t
|
||||
-T
|
||||
-w
|
||||
-x
|
Loading…
Add table
Add a link
Reference in a new issue