Consejo
Datadog admite proyectos de código abierto. Obtenga más información sobre Datadog para proyectos de código abierto.
Datadog-Static-Analyzer es el motor de analizador estático para el análisis estático de Datadog.
datadog-static-analyzer --directory /path/to/directory --output report.csv --format csvdocker run -it --rm -v /path/to/directory:/data ghcr.io/datadog/datadog-static-analyzer:latest --directory /data --output /data/report.csv --format csvPara obtener más información sobre el contenedor Docker, consulte la documentación aquí.
Si encuentra un problema, lea primero las preguntas frecuentes, puede contener la solución a su problema.
Puede elegir las reglas para usar para escanear su repositorio creando un archivo static-analysis.datadog.yml .
Primero, asegúrese de seguir la documentación y crear un archivo static-analysis.datadog.yml en la raíz de su proyecto con los conjuntos de reglas que desea utilizar.
Todas las reglas se pueden encontrar en la documentación de Datadog. Su static-analysis.datadog.yml solo puede contener reglas disponibles en la documentación de Datadog
Ejemplo de archivo YAML
schema-version : v1
rulesets :
- python-code-style
- python-best-practices
- python-inclusive
ignore :
- testsPuede usarlo en su tubería CI/CD utilizando nuestra integración:
Si lo usa en su propia tubería CI/CD, puede integrar la herramienta directamente: consulte la documentación de Datadog para obtener más información.
La extensión Datadog IntelliJ le permite usar el analizador estático directamente de todos los productos de JetBrains. Cree un archivo static-analysis.datadog.yml , descargue la extensión y puede comenzar a usarlo. Puede ver a continuación un ejemplo de una sugerencia para agregar un tiempo de espera al obtener datos con Python con el módulo de solicitudes.

La extensión del código Datadog vs le permite usar el analizador estático directamente desde el código VS. Cree un archivo static-analysis.datadog.yml , descargue la extensión y puede comenzar a usarlo.

Cuando está a bordo en el producto Datadog, puede seleccionar el conjunto de reglas que desea/necesita. Si no está utilizando Datadog directamente, existe la lista de conjuntos de reglas utilizados comunes disponibles en el producto de análisis estático Datadog por idioma.
La lista completa está disponible en nuestra documentación.
La lista de reglas está disponible en reglas.
Descargue la última versión para su sistema y arquitectura desde la página de lanzamiento.
Para obtener el analizador estático a través de Shell:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer- < target > .zipEjemplo para obtener el binario x86_64 para Linux:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer-x86_64-unknown-linux-gnu.zipdatadog-static-analyzer -i < directory > -o < output-file > Para que la herramienta funcione, debe tener un archivo <directory>/static-analysis.datadog.yml que define la configuración del analizador. Este archivo indicará las reglas que utilizará para su proyecto.
Puede obtener más información sobre la configuración en la documentación de Datadog.
El binario no se puede ejecutar como está. Debe marcar el binario como seguro para ejecutar utilizando el siguiente comando.
xattr -dr com.apple.quarantine datadog-static-analyzer-f o --format : formato del archivo de salida. -f sarif produce un archivo que cumple con SARIF-r o --rules : proporciona un archivo que contiene todas las reglas (las reglas se pueden colocar en un archivo usando datadog-export-rulesets )-c o --cpus : Número de núcleos utilizados para analizar (cuente aproximadamente 1 GB de uso de RAM por núcleo)-o o --output : archivo de salida-p o --ignore-path : ruta (patrón/globo) para ignorar; acepta múltiples-x o --performance-statistics : mostrar estadísticas de rendimiento para el analizador-g o --add-git-info : Agregar información relacionada con Git (SHA, etc.) al informe SARIF cuando se usa -f SARIF--fail-on-any-violation : haga que el programa salga un código de salida no cero si hay al menos una violación de una gravedad dada.-w o --diff-aware : Habilitar el escaneo de Diff-Award (consulte las notas dedicadas a continuación) Establezca las siguientes variables para configurar un análisis:
DD_SITE : el parámetro del sitio Datadog utilizado para obtener reglas (vista Lista) (predeterminado: datadoghq.com ) El analizador estático se puede configurar utilizando un archivo static-analysis.datadog.yml en el directorio raíz del repositorio. Este es un archivo YAML con las siguientes entradas:
rulesets : (requerido) Una lista con todos los conjuntos de reglas a usar para este repositorio (consulte la documentación de Datadog para una lista completa). Los elementos de esta lista deben ser cadenas o mapas que contengan una configuración para un conjunto de reglas (descrito a continuación).ignore : (opcional) Una lista de prefijos de ruta y patrones de globas para ignorar. No se analizará un archivo que coincida con cualquiera de sus entradas.only : (opcional) Una lista de prefijos de ruta y patrones de globas para analizar. Si only se especifica, solo se analizarán los archivos que coinciden con una de sus entradas.ignore-gitignore : (opcional) De forma predeterminada, cualquier entrada que se encuentre en el archivo .gitignore se agregan a la lista ignore . Si la opción ignore-gitignore es verdadera, el archivo .gitignore no se lee.max-file-size-kb : se ignorarán archivos (opcionales) más grandes que este tamaño, en Kilobytes. El valor predeterminado es de 200 kb.schema-version : (opcional) La versión del esquema que sigue este archivo de configuración. Si se especifica, debe ser v1 . Las entradas de la lista rulesets deben ser cadenas que contengan el nombre de un conjunto de reglas para habilitar, o un mapa que contenga la configuración para un conjunto de reglas. Este mapa contiene los siguientes campos:
ignore : (opcional) Una lista de prefijos de ruta y patrones de globas para ignorar este conjunto de reglas . Las reglas en este conjunto de reglas no se evaluarán para ningún archivo que coincida con cualquiera de las entradas en la lista ignore .only : (opcional) Una lista de prefijos de ruta y patrones de globas para analizar este conjunto de reglas . Si only se especifica, las reglas en este conjunto de reglas solo se evaluarán para archivos que coincidan con una de las entradas.rules : (opcional) Un mapa de configuraciones de reglas. Las reglas no especificadas en este mapa aún se evaluarán, pero con su configuración predeterminada. El mapa en el campo rules utiliza el nombre de la regla como clave, y los valores son mapas con los siguientes campos:
ignore (opcional) una lista de prefijos de ruta y patrones de globas para ignorar esta regla . Esta regla no se evaluará para ningún archivo que coincida con cualquiera de las entradas en la lista ignore .only : (opcional) Una lista de prefijos de ruta y patrones de globas para analizar esta regla . Si only se especifica, esta regla solo se evaluará para archivos que coincidan con una de las entradas.severity : (opcional) Si se proporciona, anule la gravedad de las violaciones producidas por esta regla. Las gravedades válidas son ERROR , WARNING , NOTICE y NONE .category : (opcional) Si se proporciona, anule la categoría de esta regla. Las categorías válidas son BEST_PRACTICES , CODE_STYLE , ERROR_PRONE , PERFORMANCE y SECURITY .arguments : (opcional) Un mapa de valores para los argumentos de la regla. El mapa en el campo arguments utiliza el nombre de un argumento como su clave, y los valores son cadenas o mapas:
Un ejemplo anotado de un archivo de configuración:
# This is a "v1" configuration file.
schema-version : v1
# The list of rulesets to enable for this repository.
rulesets :
# Enable the `python-inclusive` ruleset with the default configuration.
- python-inclusive
# Enable the `python-best-practices` ruleset with a custom configuration.
- python-best-practices :
# Do not apply any of the rules in this ruleset to files that match `src/**/*.generated.py`.
ignore :
- src/**/*.generated.py
rules :
# Special configuration for the `python-best-practices/no-generic-exception` rule.
no-generic-exception :
# Treat violations of this rule as errors (normally "notice").
severity : ERROR
# Classify violations of this rule under the "code style" category.
category : CODE_STYLE
# Only apply this rule to files under the `src/new-code` subtree.
only :
- src/new-code
# Enable the `python-code-style ruleset` with a custom configuration.
- python-code-style :
rules :
max-function-lines :
# Set arguments for the `python-code-style/max-function-lines` rule.
arguments :
# Set the `max-lines` argument to 150 in the whole repository.
max-lines : 150
max-class-lines :
# Set arguments for the `python-code-style/max-class-lines` rule.
arguments :
# Set different values for the `max-lines` argument in different subtrees.
max-lines :
# Set the `max-lines` argument to 100 by default
/ : 100
# Set the `max-lines` argument to 75 under the `src/new-code` subtree.
src/new-code : 75
# Analyze only files in the `src` and `imported` subtrees.
only :
- src
- imported
# Do not analyze any files in the `src/tests` subtree.
ignore :
- src/tests
# Do not add the content of the `.gitignore` file to the `ignore` list.
ignore-gitignore : true
# Do not analyze files larger than 100 kB.
max-file-size-kb : 100Otro ejemplo que muestra cada opción que se usa:
schema-version : v1
rulesets :
- python-best-practices
- python-code-style :
ignore :
- src/generated
- src/**/*_test.py
only :
- src
- imported/**/new/**
rules :
max-function-lines :
severity : WARNING
category : PERFORMANCE
ignore :
- src/new-code
- src/new/*.gen.py
only :
- src/new
- src/**/new-code/**
arguments :
max-lines : 150
min-lines :
/ : 10
src/new-code : 0
ignore :
- dist
- lib/**/*.py
only :
- src
- imported/**/*.py
ignore-gitignore : true
max-file-size-kb : 256 Hay una definición de esquema JSON para el static-analysis.datadog.yml en el subdirectorio schema .
Puede usarlo para verificar la sintaxis de su archivo de configuración:
npm install -g pajv )pajv validate -s schema/schema.json -d path/to/your/static-analysis.datadog.yml Hay algunos ejemplos de archivos de configuración válidos e inválidos en el schema/examples/valid y schema/examples/invalid , respectivamente. Si realiza cambios en el esquema JSON, puede probarlos con nuestros ejemplos:
npm install -g pajv )make -C schema El escaneo de DiFf-Award es una característica del Analyzer estático para escanear solo los archivos que se han cambiado recientemente. Los escaneos con trastornos de diferencia usan resultados anteriores y agregan solo las violaciones de los archivos cambiados.
Para utilizar el escaneo de Diff-Award, debe ser un cliente de Datadog.
Para usar el escaneo de DiFF-ADAPARIO:
DD_SITE de acuerdo con el centro de datos Datadog que está utilizando (https://docs.datadoghq.com/getting_started/site/)DD_APP_KEY y DD_API_KEY con su aplicación Datadog y claves API--diff-awareCuando se usa Diff-ADAPE, el analizador estático se conectará a Datadog e intentará un análisis anterior para usar. Si se produce algún problema y no se puede utilizar Diff-ADALE, el analizador generará un error como el siguiente y continuará con un escaneo completo.
Puede usar la opción --debug true para solucionar problemas aún más si es necesario.
$ datadog-static-analyzer --directory /path/to/code --output output.sarif --format sarif --diff-aware
...
diff aware not enabled (error when receiving diff-aware data from Datadog with config hash 16163d87d4a1922ab89ec891159446d1ce0fb47f9c1469448bb331b72d19f55c, sha 5509900dc490cedbe2bb64afaf43478e24ad144b), proceeding with full scan.
...Exportar los conjuntos de reglas de la API a un archivo
cargo run --bin datadog-export-rulesets -- -r < ruleset > -o < file-to-export > Consulte el archivo que contribuye. MD para obtener más información y desarrollo. MD para todos los detalles sobre las pautas de prueba y codificación.