@@ -2,11 +2,16 @@ name: CodeQL (daily)
2
2
3
3
on :
4
4
schedule :
5
- - cron : ' 30 1 * * *'
5
+ - cron : ' 30 1 * * *' # run daily at 1:30 AM UTC
6
6
workflow_dispatch :
7
+ push :
8
+ branches :
9
+ - ' **'
7
10
8
11
jobs :
9
- analyze :
12
+ # ===== Java Analysis Job =====
13
+ analyze-java :
14
+ name : " Analyze Java Code"
10
15
permissions :
11
16
actions : read # for github/codeql-action/init to get workflow details
12
17
security-events : write # for github/codeql-action/analyze to upload SARIF results
@@ -21,27 +26,114 @@ jobs:
21
26
distribution : temurin
22
27
java-version : 17
23
28
29
+ - name : Setup Gradle
30
+ uses : gradle/actions/setup-gradle@v4
31
+
24
32
- name : Initialize CodeQL
25
33
uses : github/codeql-action/init@v3
26
34
with :
27
- languages : java, c-cpp
35
+ languages : java
36
+
37
+ - name : Build Java code
38
+ # skipping build cache is needed so that all modules will be analyzed
39
+ run : ./gradlew assemble --no-build-cache
40
+
41
+ - name : Perform CodeQL analysis
42
+ uses : github/codeql-action/analyze@v3
43
+ with :
44
+ category : java
45
+
46
+ # ===== C++ Analysis Job =====
47
+ analyze-cpp :
48
+ name : " Analyze C++ Code"
49
+ permissions :
50
+ actions : read
51
+ security-events : write
52
+ runs-on : windows-latest
53
+
54
+ steps :
55
+ - uses : actions/checkout@v4
56
+
57
+ - name : Set up Java 17 (required for JNI compilation)
58
+ uses : actions/setup-java@v4
59
+ with :
60
+ distribution : temurin
61
+ java-version : 17
62
+
63
+ - name : Setup Visual Studio Build Tools
64
+ uses : microsoft/setup-msbuild@v1
65
+
66
+ # This step uses Microsoft's vswhere tool to verify that the official Windows 10 SDK (version 19041) is installed.
67
+ # vswhere is a Microsoft-provided command-line utility that locates Visual Studio installations and their components.
68
+ - name : Verify Windows SDK installation
69
+ run : |
70
+ & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Component.Windows10SDK.19041 -property installationPath
71
+ shell : pwsh
28
72
29
73
- name : Setup Gradle
30
74
uses : gradle/actions/setup-gradle@v4
31
75
32
- - name : Assemble
33
- # skipping build cache is needed so that all modules will be analyzed
34
- run : ./gradlew assemble --no-build-cache
76
+ - name : Initialize CodeQL
77
+ uses : github/codeql-action/init@v3
78
+ with :
79
+ languages : cpp
80
+ debug : true
81
+
82
+ - name : Build C++ code
83
+ shell : cmd
84
+ run : |
85
+ "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath > vs.txt
86
+ set /p VSPATH=<vs.txt
87
+ set VCVARS=%VSPATH%\VC\Auxiliary\Build\vcvars64.bat
88
+ call "%VCVARS%"
89
+ set APPINSIGHTS_WIN10_SDK_PATH=C:\Program Files (x86)\Windows Kits\10
90
+ set APPINSIGHTS_VS_PATH=%VSPATH%
91
+ set JAVA_HOME=%JAVA_HOME_17_X64%
92
+ set sourceDir=etw/native/src/main/cpp
93
+ set headerDir=etw/native/src/main/headers
94
+ set cppFile=%sourceDir%/etw_provider.cpp
95
+ echo Analyzing C++ file: %cppFile%
96
+ echo [ > compile_commands.json
97
+ echo { >> compile_commands.json
98
+ echo "directory": "%CD%/%sourceDir%", >> compile_commands.json
99
+ echo "command": "cl.exe /W4 /EHsc /sdl /std:c++14 /I\"%APPINSIGHTS_WIN10_SDK_PATH%/include/10.0.22621.0/um\" /I\"%JAVA_HOME%/include\" /I\"%JAVA_HOME%/include/win32\" /I\"%CD%/%headerDir%\" /c %cppFile%", >> compile_commands.json
100
+ echo "file": "%cppFile%" >> compile_commands.json
101
+ echo } >> compile_commands.json
102
+ echo ] >> compile_commands.json
103
+ echo // Simple file to ensure compiler is run > codeql_trigger.cpp
104
+ echo #include ^<windows.h^> >> codeql_trigger.cpp
105
+ echo #include ^<jni.h^> >> codeql_trigger.cpp
106
+ echo #include "etw_provider.h" >> codeql_trigger.cpp
107
+ echo int main() { return 0; } >> codeql_trigger.cpp
108
+ dir %sourceDir% /s /b *.cpp
109
+ dir %headerDir% /s /b *.h
110
+ cl.exe /c codeql_trigger.cpp /I"%headerDir%" /I"%sourceDir%" /I"%JAVA_HOME%/include" /I"%JAVA_HOME%/include/win32" /EHsc
111
+ if %errorlevel%==0 (
112
+ echo C++ preparation completed successfully
113
+ echo CPP_BUILD_SUCCEEDED=true>>%GITHUB_ENV%
114
+ ) else (
115
+ echo Warning: C++ build step encountered an error
116
+ echo Proceeding with CodeQL analysis anyway
117
+ echo CPP_BUILD_SUCCEEDED=false>>%GITHUB_ENV%
118
+ )
35
119
36
120
- name : Perform CodeQL analysis
37
121
uses : github/codeql-action/analyze@v3
122
+ with :
123
+ category : cpp
124
+
125
+ - name : Report C++ build status
126
+ if : env.CPP_BUILD_SUCCEEDED == 'false'
127
+ run : |
128
+ echo "::warning::C++ build failed but CodeQL scan was attempted anyway. Some C++ issues may not be detected."
38
129
39
130
scheduled-job-notification :
40
131
permissions :
41
132
issues : write
42
133
needs :
43
- - analyze
134
+ - analyze-java
135
+ - analyze-cpp
44
136
if : always()
45
137
uses : ./.github/workflows/reusable-scheduled-job-notification.yml
46
138
with :
47
- success : ${{ needs.analyze.result == 'success' }}
139
+ success : ${{ needs.analyze-java.result == 'success' && needs.analyze-cpp .result == 'success' }}
0 commit comments