Uh oh!
There was an error while loading. Please reload this page.
- 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.ymlwith 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: booleandefault: truegeneratedTestsRelativeRoot:
description: "Relative path to the root of the tests"type: stringdefault: '.utbot/test'testFramework:
type: choiceoptions:
- junit4
- junit5
- testngdefault: 'junit5'generationTimeout:
description: "Time budget for one class (ms)"type: stringdefault: '60000'codegenLanguage:
type: choiceoptions:
- java
- kotlindefault: javamockStrategy:
type: choiceoptions:
- 'no-mocks'
- 'other-packages'
- 'other-classes'default: 'other-packages'staticsMocking:
type: choiceoptions: - 'do-not-mock-statics'
- 'mock-statics'default: 'mock-statics'jobs:
build:
runs-on: ubuntu-lateststeps:
- name: Checkoutuses: actions/checkout@v2
- name: Setup Javauses: actions/setup-java@v2with:
distribution: adoptjava-version: 8
- name: Setup Gradleuses: gradle/gradle-build-action@v2with:
gradle-version: 6.8
- name: Run UTBotJava-actionuses: UnitTestBot/UTBotJava-action@v1with:
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