| 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') |
| } |
| } |