Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf718e2a

Browse files
authored
Merge branch 'main' into codeql/upgrade-to-2.16.6
2 parents68c1daf +f9070ca commitf718e2a

File tree

109 files changed

+2359
-135
lines changed

Some content is hidden

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

109 files changed

+2359
-135
lines changed

‎apply-configuration/action.yml‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name:Applies Coding Standard configuration files in the repository
2+
description:|
3+
Installs Python and indexes the CodeQL Coding Standard configuration files in the repository
4+
5+
runs:
6+
using:composite
7+
steps:
8+
-name:Install Python
9+
id:cs-install-python
10+
uses:actions/setup-python@v5
11+
with:
12+
python-version:3.9
13+
update-environment:false
14+
-name:Install dependencies and process files
15+
shell:bash
16+
run:|
17+
install_dir=$(dirname $(dirname "${{ steps.cs-install-python.outputs.python-path }}"))
18+
if [[ -z "$LD_LIBRARY_PATH" ]]; then
19+
export LD_LIBRARY_PATH="$install_dir/lib"
20+
else
21+
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$install_dir/lib"
22+
fi
23+
${{ steps.cs-install-python.outputs.python-path }} -m pip install -r ${GITHUB_ACTION_PATH}/../scripts/configuration/requirements.txt
24+
${{ steps.cs-install-python.outputs.python-path }} ${GITHUB_ACTION_PATH}/../scripts/configuration/process_coding_standards_config.py

‎c/cert/src/qlpack.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name:codeql/cert-c-coding-standards
2-
version:2.36.0-dev
2+
version:2.37.0-dev
33
description:CERT C 2016
44
suites:codeql-suites
55
license:MIT

‎c/cert/test/qlpack.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name:codeql/cert-c-coding-standards-tests
2-
version:2.36.0-dev
2+
version:2.37.0-dev
33
extractor:cpp
44
license:MIT
55
dependencies:

‎c/common/src/qlpack.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name:codeql/common-c-coding-standards
2-
version:2.36.0-dev
2+
version:2.37.0-dev
33
license:MIT
44
dependencies:
55
codeql/common-cpp-coding-standards:'*'

‎c/common/test/qlpack.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name:codeql/common-c-coding-standards-tests
2-
version:2.36.0-dev
2+
version:2.37.0-dev
33
extractor:cpp
44
license:MIT
55
dependencies:

‎c/misra/src/codingstandards/c/misra/EssentialTypes.qll‎

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,17 @@ EssentialTypeCategory getEssentialTypeCategory(Type type) {
130130
essentialType.(IntegralType).isSigned()and
131131
notessentialTypeinstanceofPlainCharType
132132
or
133+
// Anonymous enums are considered to be signed
134+
result=EssentiallySignedType()and
135+
essentialTypeinstanceofAnonymousEnumTypeand
136+
notessentialTypeinstanceofMisraBoolType
137+
or
133138
result=EssentiallyUnsignedType()and
134139
essentialType.(IntegralType).isUnsigned()and
135140
notessentialTypeinstanceofPlainCharType
136141
or
137142
result=EssentiallyEnumType()and
138-
essentialTypeinstanceofEnumand
143+
essentialTypeinstanceofNamedEnumTypeand
139144
notessentialTypeinstanceofMisraBoolType
140145
or
141146
result=EssentiallyFloatingType()and
@@ -348,16 +353,51 @@ class EssentialBinaryArithmeticExpr extends EssentialExpr, BinaryArithmeticOpera
348353
}
349354
}
350355

356+
/**
357+
* A named Enum type, as per D.5.
358+
*/
359+
classNamedEnumTypeextendsEnum{
360+
NamedEnumType(){
361+
notisAnonymous()
362+
or
363+
exists(TypeuseOfEnum|this=useOfEnum.stripType()|
364+
exists(TypedefTypet|t.getBaseType()=useOfEnum)
365+
or
366+
exists(Functionf|f.getType()=useOfEnumorf.getAParameter().getType()=useOfEnum)
367+
or
368+
exists(Structs|s.getAField().getType()=useOfEnum)
369+
or
370+
exists(Variablev|v.getType()=useOfEnum)
371+
)
372+
}
373+
}
374+
375+
/**
376+
* An anonymous Enum type, as per D.5.
377+
*/
378+
classAnonymousEnumTypeextendsEnum{
379+
AnonymousEnumType(){notthisinstanceofNamedEnumType}
380+
}
381+
382+
/**
383+
* The EssentialType of an EnumConstantAccess, which may be essentially enum or essentially signed.
384+
*/
351385
classEssentialEnumConstantAccessextendsEssentialExpr,EnumConstantAccess{
352-
overrideTypegetEssentialType(){result=getTarget().getDeclaringEnum()}
386+
overrideTypegetEssentialType(){
387+
exists(Enume|e=getTarget().getDeclaringEnum()|
388+
ifeinstanceofNamedEnumTypethenresult=eelseresult=stlr(this)
389+
)
390+
}
353391
}
354392

355393
classEssentialLiteralextendsEssentialExpr,Literal{
356394
overrideTypegetEssentialType(){
357395
ifthisinstanceofBooleanLiteral
358-
thenresultinstanceofMisraBoolType
396+
then
397+
// This returns a multitude of types - not sure if we really want that
398+
resultinstanceofMisraBoolType
359399
else(
360-
ifthis.(CharLiteral).getCharacter().length()=1
400+
ifthisinstanceofCharLiteral
361401
thenresultinstanceofPlainCharType
362402
else
363403
exists(TypeunderlyingStandardType|

‎c/misra/src/qlpack.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name:codeql/misra-c-coding-standards
2-
version:2.36.0-dev
2+
version:2.37.0-dev
33
description:MISRA C 2012
44
suites:codeql-suites
55
license:MIT

‎c/misra/src/rules/RULE-10-4/OperandsWithMismatchedEssentialTypeCategory.ql‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ where
3838
// be reported as non-compliant.
3939
leftOpTypeCategory=EssentiallyEnumType()and
4040
rightOpTypeCategory=EssentiallyEnumType()and
41-
notleftOpEssentialType=rightOpEssentialTypeand
41+
notleftOpEssentialType.getUnspecifiedType()=rightOpEssentialType.getUnspecifiedType()and
4242
message=
4343
"The operands of this operator with usual arithmetic conversions have mismatched essentially Enum types (left operand: "
4444
+leftOpEssentialType+", right operand: "+rightOpEssentialType+")."

‎c/misra/src/rules/RULE-11-5/ConversionFromPointerToVoidIntoPointerToObject.ql‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import codingstandards.cpp.Pointers
1919
fromCastcast,VoidPointerTypetype,PointerToObjectTypenewType
2020
where
2121
notisExcluded(cast, Pointers1Package::conversionFromPointerToVoidIntoPointerToObjectQuery())and
22-
type=cast.getExpr().getUnderlyingType()and
22+
type=cast.getExpr().getUnspecifiedType()and
2323
newType=cast.getUnderlyingType()and
2424
notisNullPointerConstant(cast.getExpr())
2525
selectcast,

‎c/misra/src/rules/RULE-2-2/DeadCode.ql‎

Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,83 @@
1515

1616
import cpp
1717
import codingstandards.c.misra
18-
import codingstandards.cpp.rules.deadcode.DeadCode
18+
import codingstandards.cpp.alertreporting.HoldsForAllCopies
19+
import codingstandards.cpp.deadcode.UselessAssignments
1920

20-
classMisraCDeadCodeQueryextendsDeadCodeSharedQuery{
21-
MisraCDeadCodeQuery(){this= DeadCodePackage::deadCodeQuery()}
21+
/**
22+
* Gets an explicit cast from `e` if one exists.
23+
*/
24+
CastgetExplicitCast(Expre){
25+
exists(Conversionc|c=e.getExplicitlyConverted()|
26+
result=c
27+
or
28+
result=c.(ParenthesisExpr).getExpr()
29+
)
30+
}
31+
32+
classExprStmtExprextendsExpr{
33+
ExprStmtExpr(){exists(ExprStmtes|es.getExpr()=this)}
34+
}
35+
36+
/**
37+
* An "operation" as defined by MISRA C Rule 2.2 that is dead, i.e. it's removal has no effect on
38+
* the behaviour of the program.
39+
*/
40+
classDeadOperationInstanceextendsExpr{
41+
stringdescription;
42+
43+
DeadOperationInstance(){
44+
// Exclude cases nested within macro expansions, because the code may be "live" in other
45+
// expansions
46+
isNotWithinMacroExpansion(this)and
47+
exists(ExprStmtExpre|
48+
ifexists(getExplicitCast(e))
49+
then
50+
this=getExplicitCast(e)and
51+
// void conversions are permitted
52+
notgetExplicitCast(e)instanceofVoidConversionand
53+
description="Cast operation is unused"
54+
else(
55+
this=eand
56+
(
57+
ifeinstanceofAssignment
58+
then
59+
exists(SsaDefinitionsd,LocalScopeVariablev|
60+
e=sd.getDefinition()and
61+
sd.getDefiningValue(v).isPure()and
62+
// The definition is useless
63+
isUselessSsaDefinition(sd,v)and
64+
description="Assignment to "+v.getName()+" is unused and has no side effects"
65+
)
66+
else(
67+
e.isPure()and
68+
description="Result of operation is unused and has no side effects"
69+
)
70+
)
71+
)
72+
)
73+
}
74+
75+
stringgetDescription(){result=description}
2276
}
77+
78+
classDeadOperation= HoldsForAllCopies<DeadOperationInstance,Expr>::LogicalResultElement;
79+
80+
from
81+
DeadOperationdeadOperation,DeadOperationInstanceinstance,stringmessage,Elementexplainer,
82+
stringexplainerDescription
83+
where
84+
notisExcluded(instance, DeadCodePackage::deadCodeQuery())and
85+
instance=deadOperation.getAnElementInstance()and
86+
ifinstanceinstanceofFunctionCall
87+
then
88+
message=instance.getDescription()+" from call to function $@"and
89+
explainer=instance.(FunctionCall).getTarget()and
90+
explainerDescription=explainer.(Function).getName()
91+
else(
92+
message=instance.getDescription()and
93+
// Ignore the explainer
94+
explainer=instanceand
95+
explainerDescription=""
96+
)
97+
selectdeadOperation,message+".",explainer,explainerDescription

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp