- Notifications
You must be signed in to change notification settings - Fork45
Static code analysis with UTBotJava action
Olga Naumenko edited this pageNov 17, 2022 ·1 revision
To analyse the Java project withUTBotJava-action you need to follow these simple steps:
- Apply theUTBot 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 theActions tab find the sectionRun UTBotJava action:

- ClickRun workflow and select the needed options:

- After the workflow is completed, look at theSecurity → 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 theisSorted method.
ClickShow 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 inmain 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