`DIR-4-15`: Add support for `fpclassify()` functions.
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia con l’implementazione esistente di DIR-4-15 e con l’infrastruttura della libreria guards a cui si fa riferimento nell’issue. Confronta i tre pattern di guard di fpclassify, incluse le condizioni dirette, i casi switch e una variabile di classificazione assegnata. Il lavoro è completato quando le conversioni protette supportate non producono più l’errore, mentre le conversioni potenzialmente non sicure non protette continuano a essere diagnosticate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Affected rules
DIR-4-15\
Description
The first implementation of the rule handles guards of the form isinf, isnan, isfinite, iszero, etc., however, it doesn't support guards relating to fpclassify().
Example
float may_be_inf() {
...
return 1.0/0.0;
}
void fpclassify_guard() {
float x = may_be_inf();
int y;
// error, casting possible infinity to int
y = x;
// example 1: easiest to support:
if (fpclassify(x) != FP_INFINITE) {
// or "fpclassify(x) == FP_NORMAL"
y = x;
}
// example 2: perhaps slightly harder to support, but guards library already has infra for this:
switch(x) {
case FP_NORMAL:
case FP_SUBNORMAL:
case FP_ZERO:
// or, "case FP_INFINITE: break; default:"
y = x;
}
// example 3: this is harder to support but a common pattern:
int cls = fpclassify(x);
if (cls != FP_INFINITE) {
// or "cls == FP_NORMAL || cls == FP_ZERO"
y = x;
}
}
- Lingua principale
- CodeQL
- Stelle
- 227
- Fork
- 82
- Merge medio
- 6g 7h
- PR unite (30g)
- 9
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/codeql-coding-standards
-
false positive/false negative Stardard-MISRA-C++
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
github/codeql-coding-standards#1172 ·
-
Difficulty-Low false positive/false negative false-negative Impact-Low Standard-MISRA-C
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficulty-Medium false positive/false negative false-positive Impact-Medium Standard-CERT-C
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
github/codeql-coding-standards#1200 ·
-
`RULE-0-0-1`: "unreachable statement" false positives due to over-pruning of the control-flow graph Apertafalse positive/false negative
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
github/codeql-coding-standards#1190 ·
-
false positive/false negative
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
github/codeql-coding-standards#1175 ·
Tutte le issue di github/codeql-coding-standards
Issue simili
-
ZCode 3.14.3 に対応する Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
supermomonga/zcode-acp#24 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
learningequality/ricecooker#747 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
KhronosGroup/glTF-Blender-IO#2769 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100