Configurable illegal constructs
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza leyendo ASTMapping.fs para comprender los patrones de visitor de SQL existentes y, a continuación, inspecciona la documentación de configuración de rzsql.json. Define el alcance de la configuración del linter en torno a las construcciones enumeradas, incluidas las comparaciones con NULL y las cláusulas WHERE ausentes. Se considera completado cuando el proyecto puede seleccionar construcciones permitidas y prohibidas e informar de las infracciones configuradas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Motivation
There are some constructs that are legal SQL but are almost certainly mistakes if found in a static, handwritten query.
The primary examples that come to mind are:
NULL comparison is always false.
select * from Foo where Bar = null
-- `expr = null` is always false, should probably be `Bar IS null`
UPDATE/DELETE without WHERE clause is usually a mistake
update User set Email = @newEmail
-- uhhh... you probably forgot to put `where Id = @userId`
Idea
RZSQL should have some "linters" that implement a visitor for SQL statements and expressions (like ASTMapping.fs but without any output). There should be a separate linter class for each type of bogus construct we can think of.
In rzsql.json there could be an option like so, to determine which linters will run on the SQL statements in the project.
"constructs": {
"allowed": ["MissingWhereClause"],
"banned": ["NullComparison", "UnsafeInjectRawSQL"]
}
This would let you override the linters enabled/disabled. Having both a whitelist and blacklist would let us pick a reasonable set of default linters that wouldn't be overly strict or overly lenient.
Linters would be named after the construct they throw an error upon recognizing. This way the constructs configuration setting reads like a list of what kinds of SQL are allowed and banned in your project. The goal here is to avoid the double-negative confusion that would result from something like the below, where we are effectively saying "we DON'T want the linter that checks for NOT having a where clause, because we DO want those statements in our SQL code".
"linters": {
"blacklist": ["NoMissingWhereClause"],
"whitelist": ["NullComparisonAlwaysFalse", "NoUnsafeInjectRawSQL"]
}
- Lenguaje dominante
- F#
- Estrellas
- 680
- Forks
- 23
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fsprojects/Rezoom.SQL
-
fsprojects onboardingAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#57 · 1 comentario ·
-
Dacpac support infoAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#56 · 1 comentario ·
-
Create / Drop Schema supportAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
fsprojects/Rezoom.SQL#52 · 1 comentario ·
-
Support for Geography typesAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#50 ·
-
Data type/column type: arrayAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
fsprojects/Rezoom.SQL#48 · 3 comentarios ·
Todos los issues de fsprojects/Rezoom.SQL
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
objectionary/jeo-maven-plugin#1827 ·
Los mantenedores suelen responder en 4 días
-
backend:DirectX
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
llvm/llvm-project#227530 ·
Los mantenedores suelen responder en 1 día
-
`enzymexla.linalg.lu` lowering fails for a tall matrix: the permutation is built with the pivot typeAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
EnzymeAD/Enzyme-JAX#3286 ·
Los mantenedores suelen responder en 1 día
-
bot-triaged oncall: cpu inductor
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pytorch/pytorch#199058 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
WebAssembly/component-model#733 · 1 comentario ·
Los mantenedores suelen responder en 2 días