From 65b2359b2757fd8967f4f171deb44a3fb5249e50 Mon Sep 17 00:00:00 2001 From: Austin Shalit Date: Wed, 30 Dec 2020 16:17:20 -0800 Subject: [PATCH] [build] Add spotless for other files (#3007) Adds spotless formatting for Gradle, xml, md, and gitignore files. yml linting is not performed as it requires a dependency on npm. --- .github/workflows/ci.yml | 4 +- MAINTAINERS.md | 54 ++-- README-CMAKE.md | 2 +- azure-pipelines-testbench.yaml | 146 +++++----- build.gradle | 39 ++- cameraserver/build.gradle | 40 ++- cameraserver/multiCameraServer/build.gradle | 8 +- cscore/build.gradle | 60 +++-- docs/build.gradle | 2 +- glass/build.gradle | 34 ++- glass/publish.gradle | 12 +- hal/build.gradle | 40 ++- msvcruntime/build.gradle | 182 ++++++------- myRobot/build.gradle | 5 +- ntcore/build.gradle | 34 ++- ntcore/manualTests/java/Client.java | 12 +- ntcore/manualTests/java/Server.java | 10 +- shared/config.gradle | 22 +- shared/cppDesktopTestTask.gradle | 42 +-- shared/javaDesktopTestTask.gradle | 2 +- shared/jni/publish.gradle | 5 +- shared/jni/setupBuild.gradle | 1 - shared/resources.gradle | 2 +- simulation/frc_gazebo_plugins/build.gradle | 3 +- simulation/gz_msgs/build.gradle | 18 +- simulation/halsim_gazebo/build.gradle | 1 - simulation/halsim_ws_client/build.gradle | 1 - simulation/halsim_ws_core/build.gradle | 1 - simulation/halsim_ws_server/build.gradle | 1 - styleguide/checkstyle.xml | 280 +++++++++----------- styleguide/pmd-ruleset.xml | 24 +- styleguide/suppressions.xml | 9 +- wpigui/build.gradle | 34 ++- wpilibNewCommands/build.gradle | 216 ++++++++------- wpilibOldCommands/build.gradle | 38 ++- wpilibc/build.gradle | 39 ++- wpilibcExamples/build.gradle | 28 +- wpimath/build.gradle | 34 ++- wpiutil/build.gradle | 56 ++-- 39 files changed, 879 insertions(+), 662 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fea71cffd3..9a3bf0dc9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -231,7 +231,7 @@ jobs: github.ref == 'refs/heads/master' run: cd combiner && ./gradlew publish -Pallwpilib env: - RUN_AZURE_ARTIFACTORY_RELEASE: 'TRUE' + RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE" ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - name: Combine (Release) @@ -240,7 +240,7 @@ jobs: startsWith(github.ref, 'refs/tags/v') run: cd combiner && ./gradlew publish -Pallwpilib -PreleaseRepoPublish env: - RUN_AZURE_ARTIFACTORY_RELEASE: 'TRUE' + RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE" ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - uses: actions/upload-artifact@v2 diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 63a9a57f21..de95eec7d9 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,27 +1,27 @@ -## Publishing Third Party Dependencies -Currently the 3rd party deps are imgui, opencv, and google test - -For publishing these dependencies, the version needs to be manually updated in the publish.gradle file of their respective repository. -Then, in the azure build for the dependency you want to build for, manually start a pipeline build (As of current, this is the `Run Pipeline` button). -A variable needs to be added called `RUN_AZURE_ARTIFACTORY_RELEASE`, with a value of `true`. Then when the pipeline gets started, the final build outputs will be updated to artifactory. - -To use newer versions of C++ dependencies, in `shared/config.gradle`, update the version related to the specific dependency. -For Java dependencies, there is likely a file related to the specific dependency in the shared folder. Update the version in there. - -Note, changing artifact locations (This includes changing the artifact year currently, I have an issue open to change this) requires updating the `native-utils` plugin - -## Publishing allwpilib -allwpilib publishes to the development repo on every push to master. To publish a release build, upload a new tag, and a release will automatically be built and published. - -## Publishing desktop tools -Desktop tools publish to the development repo on every push to master. To publish a release build, upload a new tag, and a release will automatically be built and published. - -## Publishing VS Code -Before publishing, make sure to update the gradlerio version in `vscode-wpilib/resources/gradle/version.txt` Also make sure the gradle wrapper version matches the wrapper required by gradlerio. -Upon pushing a tag, a release will be built, and the files will be uploaded to the releases on GitHub. For publishing to the marketplace, you need a Microsoft account and to be added as a maintainer. - -## Publishing GradleRIO -Before publishing, make sure to update the version in build.gradle. Publishing must happen locally, using the command `./gradlew publishPlugin`. This does require your API key for publishing to be set. - -## Building the installer -Update the GradleRIO version in gradle.properties, and in the scripts folder in vscode, update the vscode extension. Then push, it will build the installer on azure. +## Publishing Third Party Dependencies +Currently the 3rd party deps are imgui, opencv, and google test + +For publishing these dependencies, the version needs to be manually updated in the publish.gradle file of their respective repository. +Then, in the azure build for the dependency you want to build for, manually start a pipeline build (As of current, this is the `Run Pipeline` button). +A variable needs to be added called `RUN_AZURE_ARTIFACTORY_RELEASE`, with a value of `true`. Then when the pipeline gets started, the final build outputs will be updated to artifactory. + +To use newer versions of C++ dependencies, in `shared/config.gradle`, update the version related to the specific dependency. +For Java dependencies, there is likely a file related to the specific dependency in the shared folder. Update the version in there. + +Note, changing artifact locations (This includes changing the artifact year currently, I have an issue open to change this) requires updating the `native-utils` plugin + +## Publishing allwpilib +allwpilib publishes to the development repo on every push to master. To publish a release build, upload a new tag, and a release will automatically be built and published. + +## Publishing desktop tools +Desktop tools publish to the development repo on every push to master. To publish a release build, upload a new tag, and a release will automatically be built and published. + +## Publishing VS Code +Before publishing, make sure to update the gradlerio version in `vscode-wpilib/resources/gradle/version.txt` Also make sure the gradle wrapper version matches the wrapper required by gradlerio. +Upon pushing a tag, a release will be built, and the files will be uploaded to the releases on GitHub. For publishing to the marketplace, you need a Microsoft account and to be added as a maintainer. + +## Publishing GradleRIO +Before publishing, make sure to update the version in build.gradle. Publishing must happen locally, using the command `./gradlew publishPlugin`. This does require your API key for publishing to be set. + +## Building the installer +Update the GradleRIO version in gradle.properties, and in the scripts folder in vscode, update the vscode extension. Then push, it will build the installer on azure. diff --git a/README-CMAKE.md b/README-CMAKE.md index 9b38da6417..361a5b9c6b 100644 --- a/README-CMAKE.md +++ b/README-CMAKE.md @@ -50,7 +50,7 @@ The following build options are available: ## Build Setup -The WPILib CMake build does not allow in source builds. Because the `build` directory is used by Gradle, we recommend a `buildcmake` directory in the root. This folder is included in the gitignore. +The WPILib CMake build does not allow in source builds. Because the `build` directory is used by Gradle, we recommend a `build-cmake` directory in the root. This folder is included in the gitignore. Once you have a build folder, run CMake configuration in that build directory with the following command. diff --git a/azure-pipelines-testbench.yaml b/azure-pipelines-testbench.yaml index 674926ed6d..e0fc4a403d 100644 --- a/azure-pipelines-testbench.yaml +++ b/azure-pipelines-testbench.yaml @@ -4,88 +4,88 @@ trigger: batch: true branches: include: - - master + - master stages: -- stage: Build - jobs: - - job: IntegrationTests - displayName: Integration Tests - pool: - vmImage: 'Ubuntu 16.04' + - stage: Build + jobs: + - job: IntegrationTests + displayName: Integration Tests + pool: + vmImage: "Ubuntu 16.04" - container: - image: wpilib/roborio-cross-ubuntu:2021-18.04 + container: + image: wpilib/roborio-cross-ubuntu:2021-18.04 - timeoutInMinutes: 0 + timeoutInMinutes: 0 - steps: - - task: Gradle@2 - condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))) - inputs: - workingDirectory: '' - gradleWrapperFile: 'gradlew' - gradleOptions: '-Xmx3072m' - publishJUnitResults: false - testResultsFiles: '**/TEST-*.xml' - tasks: 'copyWpilibJIntegrationTestJarToOutput copyWpilibCTestLibrariesToOutput' - options: '-Ponlylinuxathena -PbuildServer' + steps: + - task: Gradle@2 + condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))) + inputs: + workingDirectory: "" + gradleWrapperFile: "gradlew" + gradleOptions: "-Xmx3072m" + publishJUnitResults: false + testResultsFiles: "**/TEST-*.xml" + tasks: "copyWpilibJIntegrationTestJarToOutput copyWpilibCTestLibrariesToOutput" + options: "-Ponlylinuxathena -PbuildServer" - - task: PublishPipelineArtifact@0 - inputs: - artifactName: 'Integration Tests' - targetPath: 'build/integrationTestFiles' + - task: PublishPipelineArtifact@0 + inputs: + artifactName: "Integration Tests" + targetPath: "build/integrationTestFiles" -- stage: TestBench - displayName: Test Bench - jobs: - - job: Cpp - displayName: C++ - pool: RoboRioConnections - timeoutInMinutes: 30 - workspace: - clean: all - steps: - - task: DownloadPipelineArtifact@0 - inputs: - artifactName: 'Integration Tests' - targetPath: 'build/integrationTestFiles' + - stage: TestBench + displayName: Test Bench + jobs: + - job: Cpp + displayName: C++ + pool: RoboRioConnections + timeoutInMinutes: 30 + workspace: + clean: all + steps: + - task: DownloadPipelineArtifact@0 + inputs: + artifactName: "Integration Tests" + targetPath: "build/integrationTestFiles" - - task: ShellScript@2 - displayName: Run C++ Tests - inputs: - scriptPath: test-scripts/deploy-and-run-test-on-robot.sh - args: 'cpp -A "--gtest_output=xml:/home/admin/testResults/cppreport.xml"' + - task: ShellScript@2 + displayName: Run C++ Tests + inputs: + scriptPath: test-scripts/deploy-and-run-test-on-robot.sh + args: 'cpp -A "--gtest_output=xml:/home/admin/testResults/cppreport.xml"' - - task: PublishTestResults@2 - displayName: Publish C++ Test Results - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: '*.xml' - testRunTitle: 'C++ Test Report' - searchFolder: '$(System.DefaultWorkingDirectory)/test-reports' + - task: PublishTestResults@2 + displayName: Publish C++ Test Results + inputs: + testResultsFormat: "JUnit" + testResultsFiles: "*.xml" + testRunTitle: "C++ Test Report" + searchFolder: "$(System.DefaultWorkingDirectory)/test-reports" - - job: Java - pool: RoboRioConnections - timeoutInMinutes: 30 - workspace: - clean: all - steps: - - task: DownloadPipelineArtifact@0 - inputs: - artifactName: 'Integration Tests' - targetPath: 'build/integrationTestFiles' + - job: Java + pool: RoboRioConnections + timeoutInMinutes: 30 + workspace: + clean: all + steps: + - task: DownloadPipelineArtifact@0 + inputs: + artifactName: "Integration Tests" + targetPath: "build/integrationTestFiles" - - task: ShellScript@2 - displayName: Run Java Tests - inputs: - scriptPath: test-scripts/deploy-and-run-test-on-robot.sh - args: 'java' + - task: ShellScript@2 + displayName: Run Java Tests + inputs: + scriptPath: test-scripts/deploy-and-run-test-on-robot.sh + args: "java" - - task: PublishTestResults@2 - displayName: Publish Java Test Results - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: '*.xml' - testRunTitle: 'Java Test Report' - searchFolder: '$(System.DefaultWorkingDirectory)/test-reports' + - task: PublishTestResults@2 + displayName: Publish Java Test Results + inputs: + testResultsFormat: "JUnit" + testResultsFiles: "*.xml" + testRunTitle: "Java Test Report" + searchFolder: "$(System.DefaultWorkingDirectory)/test-reports" diff --git a/build.gradle b/build.gradle index cf83bc2fc2..2b20bf188e 100644 --- a/build.gradle +++ b/build.gradle @@ -118,8 +118,12 @@ subprojects { String path = task.getLinkedFile().getAsFile().get().getAbsolutePath() exec { workingDir rootDir - def args = ["sh", "-c", "codesign --force --strict --timestamp --options=runtime " + - "--verbose -s ${project.findProperty("developerID")} ${path}"] + def args = [ + "sh", + "-c", + "codesign --force --strict --timestamp --options=runtime " + + "--verbose -s ${project.findProperty("developerID")} ${path}" + ] commandLine args } } @@ -136,13 +140,42 @@ spotless { java { target fileTree('.') { include '**/*.java' - exclude '**/manualTests/**', '**/build*/**' + exclude '**/build/**', '**/build-*/**' } googleJavaFormat() removeUnusedImports() trimTrailingWhitespace() endWithNewline() } + groovyGradle { + target fileTree('.') { + include '**/*.gradle' + exclude '**/build/**', '**/build-*/**' + } + greclipse() + indentWithSpaces(4) + trimTrailingWhitespace() + endWithNewline() + } + format 'xml', { + target fileTree('.') { + include '**/*.xml' + exclude '**/build/**', '**/build-*/**' + } + eclipseWtp('xml') + trimTrailingWhitespace() + indentWithSpaces(2) + endWithNewline() + } + format 'misc', { + target fileTree('.') { + include '**/*.md', '**/.gitignore' + exclude '**/build/**', '**/build-*/**' + } + trimTrailingWhitespace() + indentWithSpaces(2) + endWithNewline() + } } wrapper { diff --git a/cameraserver/build.gradle b/cameraserver/build.gradle index 2f864d9350..7a611e64fb 100644 --- a/cameraserver/build.gradle +++ b/cameraserver/build.gradle @@ -20,9 +20,9 @@ dependencies { ext { sharedCvConfigs = [cameraserver : [], - cameraserverBase: [], - cameraserverDev : [], - cameraserverTest: []] + cameraserverBase: [], + cameraserverDev : [], + cameraserverTest: []] staticCvConfigs = [:] useJava = true useCpp = true @@ -32,14 +32,32 @@ apply from: "${rootDir}/shared/opencv.gradle" nativeUtils.exportsConfigs { cameraserver { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } diff --git a/cameraserver/multiCameraServer/build.gradle b/cameraserver/multiCameraServer/build.gradle index e8565cd4e0..a198cc31dd 100644 --- a/cameraserver/multiCameraServer/build.gradle +++ b/cameraserver/multiCameraServer/build.gradle @@ -52,10 +52,10 @@ model { } } binaries.all { binary -> - lib project: ':cameraserver', library: 'cameraserver', linkage: 'static' - lib project: ':ntcore', library: 'ntcore', linkage: 'static' - lib project: ':cscore', library: 'cscore', linkage: 'static' - lib project: ':wpiutil', library: 'wpiutil', linkage: 'static' + lib project: ':cameraserver', library: 'cameraserver', linkage: 'static' + lib project: ':ntcore', library: 'ntcore', linkage: 'static' + lib project: ':cscore', library: 'cscore', linkage: 'static' + lib project: ':wpiutil', library: 'wpiutil', linkage: 'static' } } } diff --git a/cscore/build.gradle b/cscore/build.gradle index 90e5c20d51..d4cb383222 100644 --- a/cscore/build.gradle +++ b/cscore/build.gradle @@ -60,12 +60,12 @@ model { ext { sharedCvConfigs = [cscore : [], - cscoreBase: [], - cscoreDev : [], - cscoreTest: [], - cscoreJNIShared: []] + cscoreBase: [], + cscoreDev : [], + cscoreTest: [], + cscoreJNIShared: []] staticCvConfigs = [cscoreJNI: [], - cscoreJNICvStatic: []] + cscoreJNICvStatic: []] useJava = true useCpp = true cvStaticBuild = true @@ -127,27 +127,45 @@ def examplesMap = [:]; File examplesTree = file("$projectDir/examples") examplesTree.list(new FilenameFilter() { - @Override - public boolean accept(File current, String name) { - return new File(current, name).isDirectory(); - } -}).each { - sharedCvConfigs.put(it, []) - examplesMap.put(it, []) -} + @Override + public boolean accept(File current, String name) { + return new File(current, name).isDirectory(); + } + }).each { + sharedCvConfigs.put(it, []) + examplesMap.put(it, []) + } apply from: "${rootDir}/shared/opencv.gradle" nativeUtils.exportsConfigs { cscore { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } cscoreJNI { x86SymbolFilter = { symbols -> diff --git a/docs/build.gradle b/docs/build.gradle index 6de7f849c9..6173cd1652 100644 --- a/docs/build.gradle +++ b/docs/build.gradle @@ -39,7 +39,7 @@ cppProjectZips.add(project(':wpilibNewCommands').cppHeadersZip) doxygen { executables { doxygen version : '1.8.18', - baseURI : 'https://frcmaven.wpi.edu/artifactory/generic-release-mirror/doxygen' + baseURI : 'https://frcmaven.wpi.edu/artifactory/generic-release-mirror/doxygen' } } diff --git a/glass/build.gradle b/glass/build.gradle index 586b152a3e..afa30b47dc 100644 --- a/glass/build.gradle +++ b/glass/build.gradle @@ -30,14 +30,32 @@ if (!project.hasProperty('onlylinuxathena') && !project.hasProperty('onlylinuxra nativeUtils.exportsConfigs { glass { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } diff --git a/glass/publish.gradle b/glass/publish.gradle index 7f1d005ac6..70a5a0b577 100644 --- a/glass/publish.gradle +++ b/glass/publish.gradle @@ -29,10 +29,14 @@ model { // Get path to binary. exec { workingDir rootDir - def args = ["sh", "-c", "codesign --force --strict --deep " + - "--timestamp --options=runtime " + - "--verbose -s ${project.findProperty("developerID")} " + - "$project.buildDir/outputs/bundles/Glass.app/"] + def args = [ + "sh", + "-c", + "codesign --force --strict --deep " + + "--timestamp --options=runtime " + + "--verbose -s ${project.findProperty("developerID")} " + + "$project.buildDir/outputs/bundles/Glass.app/" + ] commandLine args } } diff --git a/hal/build.gradle b/hal/build.gradle index 8e47a1750d..4dab4e7d3a 100644 --- a/hal/build.gradle +++ b/hal/build.gradle @@ -129,14 +129,32 @@ cppHeadersZip { nativeUtils.exportsConfigs { hal { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } halJNI { x86SymbolFilter = { symbols -> @@ -152,9 +170,9 @@ model { binaries { all { if (!(it instanceof NativeBinarySpec)) return - if (it.component.name != 'hal' && it.component.name != 'halBase') return - if (it.targetPlatform.name != nativeUtils.wpi.platforms.roborio) return - nativeUtils.useRequiredLibrary(it, 'netcomm_shared', 'chipobject_shared', 'visa_shared') + if (it.component.name != 'hal' && it.component.name != 'halBase') return + if (it.targetPlatform.name != nativeUtils.wpi.platforms.roborio) return + nativeUtils.useRequiredLibrary(it, 'netcomm_shared', 'chipobject_shared', 'visa_shared') } } } diff --git a/msvcruntime/build.gradle b/msvcruntime/build.gradle index 275a014548..80dafa7ba7 100644 --- a/msvcruntime/build.gradle +++ b/msvcruntime/build.gradle @@ -1,91 +1,91 @@ -import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualStudioLocator -import org.gradle.internal.os.OperatingSystem -import org.gradle.util.VersionNumber - -plugins { - id 'cpp' - id 'maven-publish' -} - -if (OperatingSystem.current().isWindows()) { - def outputsFolder = file("$buildDir/outputs") - - def baseArtifactId = 'runtime' - def artifactGroupId = "edu.wpi.first.msvc" - def zipBaseName = "_GROUP_edu_wpi_first_msvc_ID_runtime_CLS" - - def vsLocator = gradle.services.get(VisualStudioLocator) - - def vsLocation = vsLocator.locateAllComponents().first() - - def visualCppVersion = vsLocation.visualCpp.version - - def vsDirectory = vsLocation.visualStudioDir - - def runtimeLocation = file("$vsDirectory\\VC\\Redist\\MSVC") - - def runtimeVerNumber = null - - runtimeLocation.eachFile { - def verNumber = VersionNumber.parse(it.name) - if (verNumber.major == visualCppVersion.major && verNumber.minor == visualCppVersion.minor) { - runtimeVerNumber = verNumber - } - } - - if (runtimeVerNumber != null) { - runtimeLocation = file("$runtimeLocation\\$runtimeVerNumber") - - def x86Folder = null - - file("$runtimeLocation\\x86").eachFile { - if (it.name.endsWith('.CRT')) { - x86Folder = it - } - } - - def x64Folder = null - - file("$runtimeLocation\\x64").eachFile { - if (it.name.endsWith('.CRT')) { - x64Folder = it - } - } - - def x86ZipTask = tasks.create('x86RuntimeZip', Zip) { - destinationDirectory = outputsFolder - archiveBaseName = zipBaseName - classifier = 'x86' - - from x86Folder - } - - def x64ZipTask = tasks.create('x64RuntimeZip', Zip) { - destinationDirectory = outputsFolder - archiveBaseName = zipBaseName - classifier = 'x64' - - from x64Folder - } - - addTaskToCopyAllOutputs(x86ZipTask) - addTaskToCopyAllOutputs(x64ZipTask) - - build.dependsOn x86ZipTask - build.dependsOn x64ZipTask - - publishing { - publications { - - runtime(MavenPublication) { - artifact x86ZipTask - artifact x64ZipTask - - artifactId = "${baseArtifactId}" - groupId artifactGroupId - version wpilibVersioning.version.get() - } - } - } - } -} +import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualStudioLocator +import org.gradle.internal.os.OperatingSystem +import org.gradle.util.VersionNumber + +plugins { + id 'cpp' + id 'maven-publish' +} + +if (OperatingSystem.current().isWindows()) { + def outputsFolder = file("$buildDir/outputs") + + def baseArtifactId = 'runtime' + def artifactGroupId = "edu.wpi.first.msvc" + def zipBaseName = "_GROUP_edu_wpi_first_msvc_ID_runtime_CLS" + + def vsLocator = gradle.services.get(VisualStudioLocator) + + def vsLocation = vsLocator.locateAllComponents().first() + + def visualCppVersion = vsLocation.visualCpp.version + + def vsDirectory = vsLocation.visualStudioDir + + def runtimeLocation = file("$vsDirectory\\VC\\Redist\\MSVC") + + def runtimeVerNumber = null + + runtimeLocation.eachFile { + def verNumber = VersionNumber.parse(it.name) + if (verNumber.major == visualCppVersion.major && verNumber.minor == visualCppVersion.minor) { + runtimeVerNumber = verNumber + } + } + + if (runtimeVerNumber != null) { + runtimeLocation = file("$runtimeLocation\\$runtimeVerNumber") + + def x86Folder = null + + file("$runtimeLocation\\x86").eachFile { + if (it.name.endsWith('.CRT')) { + x86Folder = it + } + } + + def x64Folder = null + + file("$runtimeLocation\\x64").eachFile { + if (it.name.endsWith('.CRT')) { + x64Folder = it + } + } + + def x86ZipTask = tasks.create('x86RuntimeZip', Zip) { + destinationDirectory = outputsFolder + archiveBaseName = zipBaseName + classifier = 'x86' + + from x86Folder + } + + def x64ZipTask = tasks.create('x64RuntimeZip', Zip) { + destinationDirectory = outputsFolder + archiveBaseName = zipBaseName + classifier = 'x64' + + from x64Folder + } + + addTaskToCopyAllOutputs(x86ZipTask) + addTaskToCopyAllOutputs(x64ZipTask) + + build.dependsOn x86ZipTask + build.dependsOn x64ZipTask + + publishing { + publications { + + runtime(MavenPublication) { + artifact x86ZipTask + artifact x64ZipTask + + artifactId = "${baseArtifactId}" + groupId artifactGroupId + version wpilibVersioning.version.get() + } + } + } + } +} diff --git a/myRobot/build.gradle b/myRobot/build.gradle index 4d6bb2673c..67cad4a660 100644 --- a/myRobot/build.gradle +++ b/myRobot/build.gradle @@ -77,7 +77,6 @@ deploy { postdeploy << { ctx -> ctx.execute('chmod +x myRobotCpp') } - } nativeArtifact('myRobotCppStatic') { @@ -136,9 +135,7 @@ dependencies { implementation project(':wpilibNewCommands') } -def simProjects = [ - 'halsim_gui' -] +def simProjects = ['halsim_gui'] model { components { diff --git a/ntcore/build.gradle b/ntcore/build.gradle index 5739b71113..3ea96a6291 100644 --- a/ntcore/build.gradle +++ b/ntcore/build.gradle @@ -7,14 +7,32 @@ apply from: "${rootDir}/shared/jni/setupBuild.gradle" nativeUtils.exportsConfigs { ntcore { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } ntcoreJNI { x86SymbolFilter = { symbols -> diff --git a/ntcore/manualTests/java/Client.java b/ntcore/manualTests/java/Client.java index e45dd7c34f..a329c83e61 100644 --- a/ntcore/manualTests/java/Client.java +++ b/ntcore/manualTests/java/Client.java @@ -18,10 +18,13 @@ public class Client { NetworkTable.setPort(10000); NetworkTable.setClientMode(); NetworkTable nt = NetworkTable.getTable(""); - try { Thread.sleep(2000); } catch (InterruptedException e) {} + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + } try { System.out.println("Got foo: " + nt.getNumber("foo")); - } catch(TableKeyNotDefinedException ex) { + } catch (TableKeyNotDefinedException ex) { } nt.putBoolean("bar", false); nt.setFlags("bar", NetworkTable.PERSISTENT); @@ -38,6 +41,9 @@ public class Client { strs[0] = "Hello"; strs[1] = "World"; nt.putStringArray("strarray", strs); - try { Thread.sleep(10000); } catch (InterruptedException e) {} + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } } } diff --git a/ntcore/manualTests/java/Server.java b/ntcore/manualTests/java/Server.java index ee4b17c7e6..9527c96be0 100644 --- a/ntcore/manualTests/java/Server.java +++ b/ntcore/manualTests/java/Server.java @@ -18,13 +18,19 @@ public class Server { NetworkTable.setPort(10000); NetworkTable.setServerMode(); NetworkTable nt = NetworkTable.getTable(""); - try { Thread.sleep(1000); } catch (InterruptedException e) {} + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } nt.putNumber("foo", 0.5); nt.setFlags("foo", NetworkTable.PERSISTENT); nt.putNumber("foo2", 0.5); nt.putNumber("foo2", 0.7); nt.putNumber("foo2", 0.6); nt.putNumber("foo2", 0.5); - try { Thread.sleep(10000); } catch (InterruptedException e) {} + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } } } diff --git a/shared/config.gradle b/shared/config.gradle index 8152840ea1..796cfe64e7 100644 --- a/shared/config.gradle +++ b/shared/config.gradle @@ -5,16 +5,16 @@ nativeUtils.withRoboRIO() nativeUtils.withRaspbian() nativeUtils.withBionic() nativeUtils { - wpi { - configureDependencies { - wpiVersion = "-1" - niLibVersion = "2020.10.1" - opencvVersion = "3.4.7-5" - googleTestVersion = "1.9.0-5-437e100-1" - imguiVersion = "1.76-10" - wpimathVersion = "-1" + wpi { + configureDependencies { + wpiVersion = "-1" + niLibVersion = "2020.10.1" + opencvVersion = "3.4.7-5" + googleTestVersion = "1.9.0-5-437e100-1" + imguiVersion = "1.76-10" + wpimathVersion = "-1" + } } - } } nativeUtils.wpi.addWarnings() @@ -26,7 +26,7 @@ nativeUtils.enableSourceLink() nativeUtils.platformConfigs.each { if (it.name.contains('windows')) return - it.linker.args << '-Wl,-rpath,\'$ORIGIN\'' + it.linker.args << '-Wl,-rpath,\'$ORIGIN\'' if (it.name == 'osxx86-64') { it.linker.args << "-headerpad_max_install_names" } @@ -99,7 +99,7 @@ ext.createComponentZipTasks = { components, names, base, type, project, func -> if (it in NativeLibrarySpec && stringNames.contains(it.name)) { it.binaries.each { if (!it.buildable) return - def target = nativeUtils.getPublishClassifier(it) + def target = nativeUtils.getPublishClassifier(it) if (configMap.containsKey(target)) { configMap.get(target).add(it) } else { diff --git a/shared/cppDesktopTestTask.gradle b/shared/cppDesktopTestTask.gradle index 04b7224df4..928cc33c92 100644 --- a/shared/cppDesktopTestTask.gradle +++ b/shared/cppDesktopTestTask.gradle @@ -1,21 +1,21 @@ -model { - tasks { - def ts = $.testSuites - project.tasks.register('testDesktopCpp') { testTask-> - def systemArch = getCurrentArch() - def found = false - ts.each { - if (it in GoogleTestTestSuiteSpec && it.name == "${nativeName}Test") { - it.binaries.each { - if (found) return - def arch = it.targetPlatform.name - if (arch == systemArch && it.buildType.name == 'debug') { - testTask.dependsOn it.tasks.run - found = true - } - } - } - } - } - } -} +model { + tasks { + def ts = $.testSuites + project.tasks.register('testDesktopCpp') { testTask-> + def systemArch = getCurrentArch() + def found = false + ts.each { + if (it in GoogleTestTestSuiteSpec && it.name == "${nativeName}Test") { + it.binaries.each { + if (found) return + def arch = it.targetPlatform.name + if (arch == systemArch && it.buildType.name == 'debug') { + testTask.dependsOn it.tasks.run + found = true + } + } + } + } + } + } +} diff --git a/shared/javaDesktopTestTask.gradle b/shared/javaDesktopTestTask.gradle index 766fa50bb8..82a6a0ee60 100644 --- a/shared/javaDesktopTestTask.gradle +++ b/shared/javaDesktopTestTask.gradle @@ -1,3 +1,3 @@ tasks.register('testDesktopJava') { - dependsOn test + dependsOn test } diff --git a/shared/jni/publish.gradle b/shared/jni/publish.gradle index f3696312d0..bb6c905c1b 100644 --- a/shared/jni/publish.gradle +++ b/shared/jni/publish.gradle @@ -65,7 +65,10 @@ addTaskToCopyAllOutputs(cppHeadersZip) model { publishing { - def taskList = createComponentZipTasks($.components, [nativeName, "${nativeName}JNIShared"], zipBaseName, Zip, project, includeStandardZipFormat) + def taskList = createComponentZipTasks($.components, [ + nativeName, + "${nativeName}JNIShared" + ], zipBaseName, Zip, project, includeStandardZipFormat) def jniTaskList = createComponentZipTasks($.components, ["${nativeName}JNI"], jniBaseName, Jar, project, { task, value -> value.each { binary -> diff --git a/shared/jni/setupBuild.gradle b/shared/jni/setupBuild.gradle index 5699ab2ed7..aa31984810 100644 --- a/shared/jni/setupBuild.gradle +++ b/shared/jni/setupBuild.gradle @@ -117,7 +117,6 @@ model { } include '**/*.h' } - } } binaries.all { diff --git a/shared/resources.gradle b/shared/resources.gradle index 21da736a5e..50879e14b1 100644 --- a/shared/resources.gradle +++ b/shared/resources.gradle @@ -13,7 +13,7 @@ ext.createGenerateResourcesTask = { name, prefix, namespace, project -> generatedOutputDir.mkdirs() inputDir.eachFile { inputFile -> if (inputFile.name.startsWith('.')) return - def fileBytes = inputFile.bytes + def fileBytes = inputFile.bytes def outputFile = file("$generatedOutputDir/${inputFile.name}.cpp") def funcName = "GetResource_" + inputFile.name.replaceAll('[^a-zA-Z0-9]', '_') outputFile.withWriter { out -> diff --git a/simulation/frc_gazebo_plugins/build.gradle b/simulation/frc_gazebo_plugins/build.gradle index d9db2b9591..8240962767 100644 --- a/simulation/frc_gazebo_plugins/build.gradle +++ b/simulation/frc_gazebo_plugins/build.gradle @@ -56,7 +56,6 @@ model { cpp.lib library: "${component.name}", linkage: "static" } } - } /* TODO: Finish writing the test case */ @@ -97,7 +96,7 @@ model { // project(':gmock').addGmockToLinker(it) //} //else { - buildable = false + buildable = false //} } } diff --git a/simulation/gz_msgs/build.gradle b/simulation/gz_msgs/build.gradle index d07dc09f39..22b6068f72 100644 --- a/simulation/gz_msgs/build.gradle +++ b/simulation/gz_msgs/build.gradle @@ -13,11 +13,9 @@ ext.skiplinuxraspbian = true apply from: "${rootDir}/shared/config.gradle" /* Use a sort of poor man's autoconf to find the protobuf development - files; on Debian, those are supplied by libprotobuf-dev. - - This should get skipped on Windows. - - TODO: Add Windows support for the simulation code */ + files; on Debian, those are supplied by libprotobuf-dev. + This should get skipped on Windows. + TODO: Add Windows support for the simulation code */ def protobuf_version = "" try { @@ -41,14 +39,14 @@ tasks.whenTaskAdded { task -> } dependencies { - implementation "com.google.protobuf:protobuf-java:${protobuf_version}" - implementation "com.google.protobuf:protoc:${protobuf_version}" + implementation "com.google.protobuf:protobuf-java:${protobuf_version}" + implementation "com.google.protobuf:protoc:${protobuf_version}" } /* There is a nice gradle plugin for protobuf, and the protoc tool - is included; using it simplifies our build process. - The trick is that we have to use the same version as the system - copy of libprotobuf-dev */ + is included; using it simplifies our build process. + The trick is that we have to use the same version as the system + copy of libprotobuf-dev */ protobuf { protoc { artifact = "com.google.protobuf:protoc:${protobuf_version}" diff --git a/simulation/halsim_gazebo/build.gradle b/simulation/halsim_gazebo/build.gradle index d476ef0708..8e6878550b 100644 --- a/simulation/halsim_gazebo/build.gradle +++ b/simulation/halsim_gazebo/build.gradle @@ -35,7 +35,6 @@ def gz_msgs_project = project(":simulation:gz_msgs") if (!gz_msgs_project.hasProperty('skip_gz_msgs') && !project.hasProperty('skip_frc_plugins')) { apply from: "${rootDir}/shared/plugins/setupBuild.gradle" - } model { diff --git a/simulation/halsim_ws_client/build.gradle b/simulation/halsim_ws_client/build.gradle index c0137a4b60..7d32586f66 100644 --- a/simulation/halsim_ws_client/build.gradle +++ b/simulation/halsim_ws_client/build.gradle @@ -28,7 +28,6 @@ if (!project.hasProperty('onlylinuxathena')) { } lib project: ":simulation:halsim_ws_core", library: "halsim_ws_core", linkage: "static" - } } } diff --git a/simulation/halsim_ws_core/build.gradle b/simulation/halsim_ws_core/build.gradle index ccf02cee37..2b22ea6c8c 100644 --- a/simulation/halsim_ws_core/build.gradle +++ b/simulation/halsim_ws_core/build.gradle @@ -41,7 +41,6 @@ if (!project.hasProperty('onlylinuxathena')) { binaries.all { project(':hal').addHalDependency(it, 'shared') lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' - } appendDebugPathToBinaries(binaries) } diff --git a/simulation/halsim_ws_server/build.gradle b/simulation/halsim_ws_server/build.gradle index 6c6be48f7a..ac44bd1e52 100644 --- a/simulation/halsim_ws_server/build.gradle +++ b/simulation/halsim_ws_server/build.gradle @@ -63,7 +63,6 @@ model { } } } - } tasks.withType(RunTestExecutable) { diff --git a/styleguide/checkstyle.xml b/styleguide/checkstyle.xml index 3b396fa1a2..f3ec47d910 100644 --- a/styleguide/checkstyle.xml +++ b/styleguide/checkstyle.xml @@ -2,90 +2,77 @@ - + - - + + - + - - + + - + - - - + + + - - - + + + - + + value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)" /> + value="Avoid using corresponding octal or Unicode escape." /> - - - + + + + value="Forbid leading zeros in an integer literal, other than zero and a hex literal." /> - - - + + + + value="Must use leading and trailing zero in floating point numbers." /> - - + value="true" /> + + - - - - + + + + @@ -93,59 +80,59 @@ module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" - + + value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" /> + OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF" /> - + + value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, + LITERAL_DO" /> - - + + + COMPACT_CTOR_DEF" /> - - + + - - - - - - + + + + + + + SR_ASSIGN, STAR, STAR_ASSIGN, LITERAL_ASSERT, TYPE_EXTENSION_AND" /> + value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)" /> + value="WhitespaceAround: ''{0}'' is not preceded with whitespace." /> @@ -161,163 +148,150 @@ module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" - + - - + + - - + + - + + value="Package name ''{0}'' must match pattern ''{1}''." /> + value="Type name ''{0}'' must match pattern ''{1}''." /> + value="^(m_[a-z]([a-zA-Z0-9]*)|value)$" /> + value="Member name ''{0}'' must match pattern ''{1}''." /> + value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /> + value="Parameter name ''{0}'' must match pattern ''{1}''." /> - - + + + value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /> + value="Catch parameter name ''{0}'' must match pattern ''{1}''." /> - + - + value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /> + + value="Local variable name ''{0}'' must match pattern ''{1}''." /> + value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /> + value="Class type name ''{0}'' must match pattern ''{1}''." /> + value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /> + value="Method type name ''{0}'' must match pattern ''{1}''." /> + value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /> + value="Interface type name ''{0}'' must match pattern ''{1}''." /> + value="GenericWhitespace ''{0}'' is followed by whitespace." /> + value="GenericWhitespace ''{0}'' is preceded with whitespace." /> + value="GenericWhitespace ''{0}'' should followed by whitespace." /> + value="GenericWhitespace ''{0}'' is not preceded with whitespace." /> - - + + - + + value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR " /> + value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" /> - + + value="true" /> + value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" /> + value="@param, @return, @throws, @deprecated" /> + value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" /> - - - - - + + + + + - - - - + + + + - + + value="Method name ''{0}'' must match pattern ''{1}''." /> - + - + - + diff --git a/styleguide/pmd-ruleset.xml b/styleguide/pmd-ruleset.xml index 57ff225f41..0faad88bff 100644 --- a/styleguide/pmd-ruleset.xml +++ b/styleguide/pmd-ruleset.xml @@ -1,8 +1,8 @@ + xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd"> PMD Ruleset for WPILib @@ -28,7 +28,7 @@ + value=".*'.*Arguments\(\)'.*" /> @@ -67,19 +67,17 @@ - + + message="Use Objects.requireNonNull() instead of throwing a NullPointerException yourself." + language="java" class="net.sourceforge.pmd.lang.rule.XPathRule"> Use Objects.requireNonNull() instead of throwing a - NullPointerException yourself. + NullPointerException yourself. diff --git a/styleguide/suppressions.xml b/styleguide/suppressions.xml index 33e4a24c7b..c2b2dfc726 100644 --- a/styleguide/suppressions.xml +++ b/styleguide/suppressions.xml @@ -4,11 +4,10 @@ suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> - + checks="(LineLength|EmptyLineSeparator|ParameterName|ImportOrder|AbbreviationAsWordInName|JavadocMethod|NoFinalizer)" /> + + checks="MissingJavadocMethod" /> + checks="(LineLength|EmptyLineSeparator|ParameterName|MissingJavadocMethod)" /> diff --git a/wpigui/build.gradle b/wpigui/build.gradle index 81516163f7..5959b67026 100644 --- a/wpigui/build.gradle +++ b/wpigui/build.gradle @@ -17,14 +17,32 @@ if (!project.hasProperty('onlylinuxathena') && !project.hasProperty('onlylinuxra nativeUtils.exportsConfigs { wpigui { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } diff --git a/wpilibNewCommands/build.gradle b/wpilibNewCommands/build.gradle index adc778b495..87b305b40c 100644 --- a/wpilibNewCommands/build.gradle +++ b/wpilibNewCommands/build.gradle @@ -1,99 +1,117 @@ -ext { - nativeName = 'wpilibNewCommands' - devMain = 'edu.wpi.first.wpilibj.commands.DevMain' -} - -evaluationDependsOn(':ntcore') -evaluationDependsOn(':cscore') -evaluationDependsOn(':hal') -evaluationDependsOn(':wpimath') -evaluationDependsOn(':wpilibc') -evaluationDependsOn(':cameraserver') -evaluationDependsOn(':wpilibj') - -apply from: "${rootDir}/shared/javacpp/setupBuild.gradle" - -dependencies { - implementation project(':wpiutil') - implementation project(':ntcore') - implementation project(':cscore') - implementation project(':hal') - implementation project(':wpimath') - implementation project(':wpilibj') - devImplementation project(':wpiutil') - devImplementation project(':ntcore') - devImplementation project(':cscore') - devImplementation project(':hal') - devImplementation project(':wpimath') - devImplementation project(':wpilibj') - testImplementation 'com.google.guava:guava:19.0' - testImplementation 'org.mockito:mockito-core:2.27.0' -} - -nativeUtils.exportsConfigs { - wpilibNewCommands { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - } -} - -model { - components {} - binaries { - all { - if (!it.buildable || !(it instanceof NativeBinarySpec)) { - return - } - lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared' - lib project: ':ntcore', library: 'ntcore', linkage: 'shared' - project(':hal').addHalDependency(it, 'shared') - lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' - lib project: ':wpimath', library: 'wpimath', linkage: 'shared' - - if (it.component.name == "${nativeName}Dev") { - lib project: ':ntcore', library: 'ntcoreJNIShared', linkage: 'shared' - project(':hal').addHalJniDependency(it) - } - - if (it instanceof GoogleTestTestSuiteBinarySpec) { - nativeUtils.useRequiredLibrary(it, 'opencv_shared') - lib project: ':cscore', library: 'cscore', linkage: 'shared' - } - if ((it instanceof NativeExecutableBinarySpec || it instanceof GoogleTestTestSuiteBinarySpec) && it.targetPlatform.name == nativeUtils.wpi.platforms.roborio) { - nativeUtils.useRequiredLibrary(it, 'netcomm_shared', 'chipobject_shared', 'visa_shared', 'ni_runtime_shared') - } - } - } - tasks { - def c = $.components - def found = false - def systemArch = getCurrentArch() - c.each { - if (it in NativeExecutableSpec && it.name == "${nativeName}Dev") { - it.binaries.each { - if (!found) { - def arch = it.targetPlatform.name - if (arch == systemArch) { - def filePath = it.tasks.install.installDirectory.get().toString() + File.separatorChar + 'lib' - - found = true - } - } - } - } - } - } -} - -test { - testLogging { - outputs.upToDateWhen {false} - showStandardStreams = true - } -} +ext { + nativeName = 'wpilibNewCommands' + devMain = 'edu.wpi.first.wpilibj.commands.DevMain' +} + +evaluationDependsOn(':ntcore') +evaluationDependsOn(':cscore') +evaluationDependsOn(':hal') +evaluationDependsOn(':wpimath') +evaluationDependsOn(':wpilibc') +evaluationDependsOn(':cameraserver') +evaluationDependsOn(':wpilibj') + +apply from: "${rootDir}/shared/javacpp/setupBuild.gradle" + +dependencies { + implementation project(':wpiutil') + implementation project(':ntcore') + implementation project(':cscore') + implementation project(':hal') + implementation project(':wpimath') + implementation project(':wpilibj') + devImplementation project(':wpiutil') + devImplementation project(':ntcore') + devImplementation project(':cscore') + devImplementation project(':hal') + devImplementation project(':wpimath') + devImplementation project(':wpilibj') + testImplementation 'com.google.guava:guava:19.0' + testImplementation 'org.mockito:mockito-core:2.27.0' +} + +nativeUtils.exportsConfigs { + wpilibNewCommands { + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + } +} + +model { + components {} + binaries { + all { + if (!it.buildable || !(it instanceof NativeBinarySpec)) { + return + } + lib project: ':wpilibc', library: 'wpilibc', linkage: 'shared' + lib project: ':ntcore', library: 'ntcore', linkage: 'shared' + project(':hal').addHalDependency(it, 'shared') + lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' + lib project: ':wpimath', library: 'wpimath', linkage: 'shared' + + if (it.component.name == "${nativeName}Dev") { + lib project: ':ntcore', library: 'ntcoreJNIShared', linkage: 'shared' + project(':hal').addHalJniDependency(it) + } + + if (it instanceof GoogleTestTestSuiteBinarySpec) { + nativeUtils.useRequiredLibrary(it, 'opencv_shared') + lib project: ':cscore', library: 'cscore', linkage: 'shared' + } + if ((it instanceof NativeExecutableBinarySpec || it instanceof GoogleTestTestSuiteBinarySpec) && it.targetPlatform.name == nativeUtils.wpi.platforms.roborio) { + nativeUtils.useRequiredLibrary(it, 'netcomm_shared', 'chipobject_shared', 'visa_shared', 'ni_runtime_shared') + } + } + } + tasks { + def c = $.components + def found = false + def systemArch = getCurrentArch() + c.each { + if (it in NativeExecutableSpec && it.name == "${nativeName}Dev") { + it.binaries.each { + if (!found) { + def arch = it.targetPlatform.name + if (arch == systemArch) { + def filePath = it.tasks.install.installDirectory.get().toString() + File.separatorChar + 'lib' + + found = true + } + } + } + } + } + } +} + +test { + testLogging { + outputs.upToDateWhen {false} + showStandardStreams = true + } +} diff --git a/wpilibOldCommands/build.gradle b/wpilibOldCommands/build.gradle index 9c2cb5c5ee..8b513f4d74 100644 --- a/wpilibOldCommands/build.gradle +++ b/wpilibOldCommands/build.gradle @@ -30,14 +30,32 @@ dependencies { nativeUtils.exportsConfigs { wpilibOldCommands { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } @@ -55,8 +73,8 @@ model { lib project: ':wpimath', library: 'wpimath', linkage: 'shared' if (it.component.name == "${nativeName}Dev") { - lib project: ':ntcore', library: 'ntcoreJNIShared', linkage: 'shared' - project(':hal').addHalJniDependency(it) + lib project: ':ntcore', library: 'ntcoreJNIShared', linkage: 'shared' + project(':hal').addHalJniDependency(it) } if (it instanceof GoogleTestTestSuiteBinarySpec) { diff --git a/wpilibc/build.gradle b/wpilibc/build.gradle index 82a1adcce2..f101852109 100644 --- a/wpilibc/build.gradle +++ b/wpilibc/build.gradle @@ -62,14 +62,32 @@ apply from: "${rootDir}/shared/googletest.gradle" nativeUtils.exportsConfigs { wpilibc { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } @@ -79,7 +97,10 @@ model { sources { cpp { source { - srcDirs = ['src/main/native/cpp', "$buildDir/generated/cpp"] + srcDirs = [ + 'src/main/native/cpp', + "$buildDir/generated/cpp" + ] include '**/*.cpp' } exportedHeaders { diff --git a/wpilibcExamples/build.gradle b/wpilibcExamples/build.gradle index 232e440b02..bc94a85380 100644 --- a/wpilibcExamples/build.gradle +++ b/wpilibcExamples/build.gradle @@ -17,22 +17,22 @@ ext.templatesMap = [:] File examplesTree = file("$projectDir/src/main/cpp/examples") examplesTree.list(new FilenameFilter() { - @Override - public boolean accept(File current, String name) { - return new File(current, name).isDirectory(); - } -}).each { - examplesMap.put(it, []) -} + @Override + public boolean accept(File current, String name) { + return new File(current, name).isDirectory(); + } + }).each { + examplesMap.put(it, []) + } File templatesTree = file("$projectDir/src/main/cpp/templates") templatesTree.list(new FilenameFilter() { - @Override - public boolean accept(File current, String name) { - return new File(current, name).isDirectory(); - } -}).each { - templatesMap.put(it, []) -} + @Override + public boolean accept(File current, String name) { + return new File(current, name).isDirectory(); + } + }).each { + templatesMap.put(it, []) + } nativeUtils.platformConfigs.named(nativeUtils.wpi.platforms.roborio).configure { cppCompiler.args.remove('-Wno-error=deprecated-declarations') diff --git a/wpimath/build.gradle b/wpimath/build.gradle index c023a1aad0..8464f87e08 100644 --- a/wpimath/build.gradle +++ b/wpimath/build.gradle @@ -12,14 +12,32 @@ apply from: "${rootDir}/shared/jni/setupBuild.gradle" nativeUtils.exportsConfigs { wpimath { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } diff --git a/wpiutil/build.gradle b/wpiutil/build.gradle index f2efe2826d..97ae237eea 100644 --- a/wpiutil/build.gradle +++ b/wpiutil/build.gradle @@ -146,26 +146,44 @@ ext { def examplesMap = [:]; file("$projectDir/examples").list(new FilenameFilter() { - @Override - public boolean accept(File current, String name) { - return new File(current, name).isDirectory(); - } -}).each { - examplesMap.put(it, []) -} + @Override + public boolean accept(File current, String name) { + return new File(current, name).isDirectory(); + } + }).each { + examplesMap.put(it, []) + } apply from: "${rootDir}/shared/jni/setupBuild.gradle" nativeUtils.exportsConfigs { wpiutil { - x86ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] - x64ExcludeSymbols = ['_CT??_R0?AV_System_error', '_CT??_R0?AVexception', '_CT??_R0?AVfailure', - '_CT??_R0?AVruntime_error', '_CT??_R0?AVsystem_error', '_CTA5?AVfailure', - '_TI5?AVfailure', '_CT??_R0?AVout_of_range', '_CTA3?AVout_of_range', - '_TI3?AVout_of_range', '_CT??_R0?AVbad_cast'] + x86ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] + x64ExcludeSymbols = [ + '_CT??_R0?AV_System_error', + '_CT??_R0?AVexception', + '_CT??_R0?AVfailure', + '_CT??_R0?AVruntime_error', + '_CT??_R0?AVsystem_error', + '_CTA5?AVfailure', + '_TI5?AVfailure', + '_CT??_R0?AVout_of_range', + '_CTA3?AVout_of_range', + '_TI3?AVout_of_range', + '_CT??_R0?AVbad_cast' + ] } } @@ -210,7 +228,9 @@ model { sources { cpp { source { - srcDirs = ['src/netconsoleServer/native/cpp'] + srcDirs = [ + 'src/netconsoleServer/native/cpp' + ] includes = ['**/*.cpp'] } } @@ -227,7 +247,9 @@ model { sources { cpp { source { - srcDirs = ['src/netconsoleTee/native/cpp'] + srcDirs = [ + 'src/netconsoleTee/native/cpp' + ] includes = ['**/*.cpp'] } }