To analyse the Java project with UTBotJava-action you need to follow these simple steps:
- Apply the UTBot gradle plugin to your project:
plugins {
id "org.utbot.gradle.plugin" version "1.0.0-alpha"
}
- Create a new file
<your-repository>/.github/workflows/run-utbot-java-action.yml
with a workflow that can be run and configured manually:
name: "Run UTBotJava action"
on:
workflow_dispatch:
inputs:
pushTests:
description: "Push generated tests to the repository"
type: boolean
default: true
generatedTestsRelativeRoot:
description: "Relative path to the root of the tests"
type: string
default: '.utbot/test'
testFramework:
type: choice
options:
- junit4
- junit5
- testng
default: 'junit5'
generationTimeout:
description: "Time budget for one class (ms)"
type: string
default: '60000'
codegenLanguage:
type: choice
options:
- java
- kotlin
default: java
mockStrategy:
type: choice
options:
- 'no-mocks'
- 'other-packages'
- 'other-classes'
default: 'other-packages'
staticsMocking:
type: choice
options:
- 'do-not-mock-statics'
- 'mock-statics'
default: 'mock-statics'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 8
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: 6.8
- name: Run UTBotJava-action
uses: UnitTestBot/UTBotJava-action@v1
with:
pushTests: ${{ inputs.pushTests }}
generatedTestsRelativeRoot: ${{ inputs.generatedTestsRelativeRoot }}
testFramework: ${{ inputs.testFramework }}
generationTimeout: ${{ inputs.generationTimeout }}
codegenLanguage: ${{ inputs.codegenLanguage }}
mockStrategy: ${{ inputs.mockStrategy }}
staticsMocking: ${{ inputs.staticsMocking }}
- On the Actions tab find the section Run UTBotJava action:
- Click Run workflow and select the needed options:
- After the workflow is completed, look at the Security → Code Scanning Alerts to find the detected errors (by the way, you won`t find any if your code is fine 😉):
- Explore any alert by clicking on it:
As you see in this case above, UTBot detected an unchecked ArrayIndexOutOfBoundsException by passing the array [-192, -192]
to the isSorted
method.
Click Show paths button, and you see the execution trace.
📍 Note: All these steps are performed more clearly in this project, watch it above. 🙂