Skip to content

Commit c56946a

Browse files
committed
Merge branch 'main' into jeongsoolee09/MISRA-C++-2023-Memory
2 parents 32be773 + 68892e6 commit c56946a

File tree

377 files changed

+302527
-1350
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

377 files changed

+302527
-1350
lines changed

.github/copilot-instructions.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
description: 'Code review guidelines for GitHub copilot in this project'
3+
applyTo: '**'
4+
excludeAgent: ["coding-agent"]
5+
---
6+
7+
# Code Review Instructions
8+
9+
A change note is required for any pull request which modifies:
10+
- The structure or layout of the release artifacts.
11+
- The evaluation performance (memory, execution time) of an existing query.
12+
- The results of an existing query in any circumstance.
13+
14+
If the pull request only adds new rule queries, a change note is not required.
15+
Confirm that either a change note is not required or the change note is required and has been added.
16+
17+
For PRs that add new queries or modify existing queries, also consider the following review checklist:
18+
- Confirm that the output format of shared queries is valid.
19+
- Have all the relevant rule package description files been checked in?
20+
- Have you verified that the metadata properties of each new query is set appropriately?
21+
- Do all the unit tests contain both "COMPLIANT" and "NON_COMPLIANT" cases?
22+
- Are all the alerts in the expected file annotated as NON_COMPLIANT in the test source file?
23+
- Are the alert messages properly formatted and consistent with the style guide?
24+
- Does the query have an appropriate level of in-query comments/documentation?
25+
- Does the query not reinvent features in the standard library?
26+
- Can the query be simplified further (not golfed!).
27+
28+
In your review output, list only those checklist items that are not satisfied or are uncertain, but also report any other problems you find outside this checklist; do not mention checklist items that clearly pass.
29+
30+
## Validating tests and .expected files
31+
32+
The test infrastructure for CodeQL that we use in this project involves the creation of a test directory with the following structure:
33+
- Test root is `some/path/test/path/to/feature` (mirrors `some/path/src/path/to/query`)
34+
- At least one test `c` or `c++` file, typically named `test.c`/`test.cpp`, with lines annotated `// COMPLIANT` or `// NON_COMPLIANT`
35+
- A `.ql` file with test query logic, or a `.qlref` file referring to the production query logic
36+
- A matching `FOO.expected` file to go with each `FOO.ql` or `FOO.qlref`, containing the test query results for the test `c` or `c++` files
37+
- Note that some test directories simply have a `testref` file, to document that a certain query is tested in a different directory.
38+
39+
As a code reviewer, it is critical to ensure that the results in the `.expected` file match the comments in the test file.
40+
41+
The `.expected` file uses a columnar format:
42+
- For example, a basic row may look like `| test.cpp:8:22:8:37 | element | message |`.
43+
- For a query with `select x, "test"`, the columns are | x.getLocation() | x.toString() | "test" |`
44+
- An alert with placeholders will use `$@` in the message, and have additional `element`/`string` columns for placeholder, e.g. `| test.cpp:8:22:8:37 | ... + ... | Invalid add of $@. | test.cpp:7:5:7:12 | my_var | deprecated variable my_var |`.
45+
- Remember, there is one `.expected` file for each `.ql` or `.qlref` file.
46+
- Each `.expected` file will contain the results for all test c/cpp files.
47+
- The `toString()` format of QL objects is deliberately terse for performance reasons.
48+
- For certain queries such as "path problems", the results may be grouped into categories via text lines with the category name, e.g. `nodes` and `edges` and `problems`.
49+
50+
Reviewing tests in this style can be tedious and error prone, but fundamental to the effectiveness of our TDD requirements in this project.
51+
52+
When reviewing tests, it is critical to:
53+
- Check that each `NON_COMPLIANT` case in the test file has a row in the correct `.expected` file referring to the correct location.
54+
- Check that each row in each `.expected` file has a `NON_COMPLIANT` case in the test file at the correct location.
55+
- Check that there are no `.expected` rows that refer to test code cases marked as `COMPLIANT`, or with no comment
56+
- Note that it is OK if the locations of the comment are not precisely aligned with the alert
57+
- Check that the alert message and placeholders are accurate and understandable.
58+
- Check that the locations do not refer to files in the standard library, as these have issues in GitHub's Code Scanning UI and complicate our compiler compatibility tests.
59+
- Consider the "test coverage" of the query, are each of its logical statements effectively exercised individually, collectively? The test should neither be overly bloated nor under specified.
60+
- Consider the edge cases of the language itself, will the analysis work in non-trivial cases, are all relevant language concepts tested here? This doesn't need to be exhaustive, but it should be thoughfully thorough.

.github/workflows/code-scanning-pack-gen.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848

4949
- name: Cache CodeQL
5050
id: cache-codeql
51-
uses: actions/cache@v4
51+
uses: actions/cache@v5
5252
with:
5353
path: ${{ github.workspace }}/codeql_home
5454
key: codeql-home-${{ matrix.os }}-${{ matrix.codeql_cli }}-${{ matrix.codeql_standard_library }}
@@ -111,7 +111,7 @@ jobs:
111111
zip -r codeql-coding-standards/code-scanning-cpp-query-pack.zip codeql-coding-standards/c/ codeql-coding-standards/cpp/ codeql-coding-standards/.codeqlmanifest.json codeql-coding-standards/supported_codeql_configs.json codeql-coding-standards/scripts/configuration codeql-coding-standards/scripts/reports codeql-coding-standards/scripts/shared codeql-coding-standards/scripts/guideline_recategorization codeql-coding-standards/schemas
112112
113113
- name: Upload GHAS Query Pack
114-
uses: actions/upload-artifact@v4
114+
uses: actions/upload-artifact@v6
115115
with:
116116
name: code-scanning-cpp-query-pack.zip
117117
path: code-scanning-cpp-query-pack.zip
@@ -132,7 +132,7 @@ jobs:
132132
codeql pack bundle --output=report-coding-standards.tgz cpp/report/src
133133
134134
- name: Upload qlpack bundles
135-
uses: actions/upload-artifact@v4
135+
uses: actions/upload-artifact@v6
136136
with:
137137
name: coding-standards-codeql-packs
138138
path: '*-coding-standards.tgz'

.github/workflows/codeql_unit_tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
uses: actions/checkout@v5
5151

5252
- name: Install Python
53-
uses: actions/setup-python@v5
53+
uses: actions/setup-python@v6
5454
with:
5555
python-version: "3.9"
5656

@@ -59,7 +59,7 @@ jobs:
5959

6060
- name: Cache CodeQL
6161
id: cache-codeql
62-
uses: actions/cache@v4
62+
uses: actions/cache@v5
6363
with:
6464
# A list of files, directories, and wildcard patterns to cache and restore
6565
path: ${{github.workspace}}/codeql_home
@@ -153,7 +153,7 @@ jobs:
153153
file.close()
154154
155155
- name: Upload test results
156-
uses: actions/upload-artifact@v4
156+
uses: actions/upload-artifact@v6
157157
with:
158158
name: ${{ matrix.language }}-test-results-${{ runner.os }}-${{ matrix.codeql_cli }}-${{ matrix.codeql_standard_library_ident }}
159159
path: |
@@ -168,12 +168,12 @@ jobs:
168168
steps:
169169
- name: Check if run-test-suites job failed to complete, if so fail
170170
if: ${{ needs.run-test-suites.result == 'failure' }}
171-
uses: actions/github-script@v7
171+
uses: actions/github-script@v8
172172
with:
173173
script: |
174174
core.setFailed('Test run job failed')
175175
- name: Collect test results
176-
uses: actions/download-artifact@v4
176+
uses: actions/download-artifact@v7
177177

178178
- name: Validate test results
179179
run: |

.github/workflows/dispatch-matrix-test-on-comment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
--json \
4545
-R github/codeql-coding-standards-release-engineering
4646
47-
- uses: actions/github-script@v7
47+
- uses: actions/github-script@v8
4848
if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/test-matrix') && steps.check-write-permission.outputs.has-permission }}
4949
with:
5050
script: |

.github/workflows/dispatch-release-performance-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
--json \
4545
-R github/codeql-coding-standards-release-engineering
4646
47-
- uses: actions/github-script@v7
47+
- uses: actions/github-script@v8
4848
if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/test-performance') && steps.check-write-permission.outputs.has-permission }}
4949
with:
5050
script: |

.github/workflows/extra-rule-validation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ jobs:
4646
run: scripts/util/Test-SharedImplementationsHaveTestCases.ps1 -Language c -CIMode
4747

4848

49-
- uses: actions/upload-artifact@v4
49+
- uses: actions/upload-artifact@v6
5050
if: failure()
5151
with:
5252
name: missing-test-report.csv
5353
path: MissingTestReport*.csv
5454

55-
- uses: actions/upload-artifact@v4
55+
- uses: actions/upload-artifact@v6
5656
if: failure()
5757
with:
5858
name: test-report.csv

.github/workflows/finalize-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
path: tooling
5858

5959
- name: Install Python
60-
uses: actions/setup-python@v5
60+
uses: actions/setup-python@v6
6161
with:
6262
python-version: "3.9"
6363

.github/workflows/generate-html-docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
uses: actions/checkout@v5
2626

2727
- name: Install Python
28-
uses: actions/setup-python@v5
28+
uses: actions/setup-python@v6
2929
with:
3030
python-version: "3.9"
3131

@@ -37,7 +37,7 @@ jobs:
3737
python scripts/documentation/generate_iso26262_docs.py coding-standards-html-docs
3838
3939
- name: Upload HTML documentation
40-
uses: actions/upload-artifact@v4
40+
uses: actions/upload-artifact@v6
4141
with:
4242
name: coding-standards-docs-${{ github.sha }}
4343
path: coding-standards-html-docs/

.github/workflows/prepare-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
ref: ${{ inputs.ref }}
4040

4141
- name: Install Python
42-
uses: actions/setup-python@v5
42+
uses: actions/setup-python@v6
4343
with:
4444
python-version: "3.9"
4545

.github/workflows/standard_library_upgrade_tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ jobs:
4646
uses: actions/checkout@v5
4747

4848
- name: Setup Python 3
49-
uses: actions/setup-python@v5
49+
uses: actions/setup-python@v6
5050
with:
5151
python-version: "3.x"
5252

5353
- name: Cache CodeQL
5454
id: cache-codeql
55-
uses: actions/cache@v4
55+
uses: actions/cache@v5
5656
with:
5757
# A list of files, directories, and wildcard patterns to cache and restore
5858
path: ${{github.workspace}}/codeql_home
@@ -145,7 +145,7 @@ jobs:
145145
}, test_summary_file)
146146
147147
- name: Upload test results
148-
uses: actions/upload-artifact@v4
148+
uses: actions/upload-artifact@v6
149149
with:
150150
name: test-results-${{runner.os}}-${{matrix.codeql_cli}}-${{matrix.codeql_standard_library_ident}}
151151
path: |
@@ -159,12 +159,12 @@ jobs:
159159
runs-on: ubuntu-22.04
160160
steps:
161161
- name: Install Python
162-
uses: actions/setup-python@v5
162+
uses: actions/setup-python@v6
163163
with:
164164
python-version: "3.9"
165165

166166
- name: Collect test results
167-
uses: actions/download-artifact@v4
167+
uses: actions/download-artifact@v7
168168

169169
- name: Validate test results
170170
shell: python

0 commit comments

Comments
 (0)