blob: ecc2e36d825382336ae8a7bdc071605b864a02af [file]
def semgrepExecutable = providers.gradleProperty('semgrepExecutable')
.orElse(providers.environmentVariable('SEMGREP_EXECUTABLE'))
.orElse('semgrep')
def semgrepConfig = layout.projectDirectory.file('.semgrep.yml')
def semgrepIgnore = layout.projectDirectory.file('.semgrepignore')
def semgrepSources = files(subprojects.collect { subproject ->
subproject.fileTree('src') {
include '**/*.java'
}
})
tasks.register('semgrepCheck', Exec) {
group = 'verification'
description = 'Runs the Semgrep source checks.'
inputs.file semgrepConfig
inputs.file semgrepIgnore
inputs.files semgrepSources
onlyIf {
def executable = semgrepExecutable.get()
def executablePath = new File(executable)
def hasPath = executablePath.isAbsolute() || executable.contains('/') || executable.contains('\\')
def available = hasPath
? executablePath.isFile() && executablePath.canExecute()
: System.getenv('PATH')?.split(File.pathSeparator)?.any {
def candidate = new File(it, executable)
candidate.isFile() && candidate.canExecute()
}
if (!available)
logger.lifecycle("Skipping semgrepCheck: '${executable}' is not available.")
return available
}
commandLine semgrepExecutable.get(),
'scan',
'--config', semgrepConfig.asFile,
'--error',
'--metrics=off',
'--disable-version-check',
'--quiet',
projectDir
}
subprojects {
apply plugin: 'java'
group = 'org.apache.cassandra'
version = '1.0-SNAPSHOT'
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
repositories {
mavenCentral()
}
test {
useJUnitPlatform()
jvmArgs '--add-opens', 'java.base/java.lang=ALL-UNNAMED'
}
tasks.named('check') {
dependsOn rootProject.tasks.named('semgrepCheck')
}
}