-
Notifications
You must be signed in to change notification settings - Fork 45
Static code analysis with UTBotJava action
Olga Naumenko edited this page Nov 17, 2022
·
1 revision
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: You can find all these steps performed in our sample project: UTBotJava-action-example
- Check system requirements
- Install or update plugin
- Generate tests with default configuration
- Fine-tune test generation
- Get use of test results
(redirect to /docs in main repo)
- Contributing guide
- Developer guide
- Naming and labeling conventions
- Interprocess debugging
- Interprocess logging
- UnitTestBot overall architecture
- Android Studio support
- Assumption mechanism
- Choosing language-specific IDE
- Code generation and rendering
- Fuzzing Platform (FP) Design
- Instrumented process API: handling errors and results
- UnitTestBot JavaScript plugin setup
- Night statistics monitoring
- RD for UnitTestBot
- Sandboxing
- UnitTestBot settings
- Speculative field non-nullability assumptions
- Symbolic analysis of static initializers
- Summarization module
- Taint analysis
- UnitTestBot decomposition
- UtUtils class
- UnitTestBot Family changes