Merged
Conversation
This also requires updating rules_kotlin, which in turn requires some changes to target names.
Remove flags that are now enabled by default and silence a javac warning caused by compiling for Java 8 on JDK 21.
Locally, we compile against and run tests on JDK 21, which gives us the best performance as well as the ability to (conditionally) use newer APIs without having to resort to reflection.
Tests that were already executed on PRs don't need to run again after a commit, as a linear history is enforced. Furthermore, fuzz tests and the end to end test don't need to be executed on every PR change.
Executing tests on Windows and mac only with the latest JDK version in PRs reduces the pipeline execution time without reducing the test coverage.
Catch issues in tests via assertions instead of `IndexOutOfBoundsException`s.
This new method allows an implementation of the analogue of `withoutInit()` for `ValueMutator`s. Also add support to all collection mutators.
The mutator is based on a generic mutator for aggregates of immutable type, i.e., classes with a "constructor" (that can also be a static factory method) and matching getters. This component can be reused for immutable objects that aren't Records, e.g. `@AutoValue`s.
Tagging java_export targets with no-sources prevents the publish of its sources jar.
Artifactory doesn't need signed artifacts, which removed some complexity from the release process. As releases are private, publishing of java docs and docker images is deactivated for now.
Previously, we had two different versions of Protobuf on the classpath. Since the outdated one was at the very back, it didn't matter.
Along the way implement `getAnnotatedOwnerType` in terms of the base type's owner type on JDK 9+.
The hierarchy consisting of the concrete class `ChainedMutatorFactory` and the abstract class `MutatorFactory` is split into three parts: * A functional interface `MutatorFactory` implemented by the individual `MutatorFactory`s with a single method that is passed an `ExtendedMutatorFactory`, which allows individual mutator factories to use additional features available on that class, but not individual mutators. * An abstract class `ExtendedMutatorFactory` with additional convenience functions that is part of the `api` package. * A concrete implementation in the form of the existing `ChainedMutatorFactory`, which can be moved to the `engine` package and thus start using mutator combinators in a follow-up PR. Along the way, the nesting of `ChainedMutatorFactory`s is replaced with a single top-level instance, which allows for state to be tracked for a given mutator and its child mutators, but not sibling mutators.
Mutators can be interned by `AnnotatedType` and a are only used for the current mutator and child mutator constructions, not sibling mutator constructions.
When a record contains two fields that have the same record type, these fields are no longer unconditionally treated as recursive.
With `JAZZER_MUTATOR_DEBUG=1`, the attempts at constructing a mutator are emitted in a tree structure.
All usages of this function could be replaced with only slightly more verbose usages of `TypeHolder`, `ParameterHolder` or by looking up `AnnotatedType`s via reflection directly. This saves us from having to maintain yet another `AnnotatedType` factory.
Comparing only the first or last part of a String in the startsWith and endsWith hooks greatly improves the fuzzing performance.
We should add this again to the CI after fixing the issues with setting up the Android SDK
eac8faa to
e5c791d
Compare
MarkusZoppelt
approved these changes
Aug 16, 2024
fmeum
reviewed
Aug 16, 2024
Contributor
|
If you are interested, I could send a follow-up PR that wires up the LICENSE/NOTICE file with Bazel's way of tying a project to license information. That would make license restrictions more visible to anyone using Jazzer. |
Member
Author
@fmeum That would be awesome! Could you push this change to this branch directly or create a PR on this branch so that I can integrate it with the first commit that changes the license? |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Make the latest version of Jazzer available in the public repository under a new license, allowing for use with open-source projects, academic research, and automated analysis for all projects in OSS-Fuzz.