Java Kotlin News Releases

El EAP de Qodana 2022.3 ya está disponible: Qodana para .NET y Go y más de 100 nuevas inspecciones

Read this post in other languages:

 

Nos complace anunciar el lanzamiento del EAP de Qodana 2022.3. Esta versión de la plataforma es compatible con .NET y Go. También hemos añadido más de 100 nuevas inspecciones para los lenguajes que ya eran compatibles. Sin embargo, las imágenes de Qodana 2022.2 son más estables, ya que Qodana 2022.3 EAP aún está en sus inicios.

 

Siga leyendo para obtener más información y convertirse en uno de los primeros en probar estas nuevas y emocionantes funcionalidades.

 

 


COMIENCE A USAR QODANA

 

Nuestros nuevos linters aportan todas las ventajas de Rider y GoLand para que pueda detectar código anómalo y posibles errores, eliminar código muerto, mejorar la estructura general del código e introducir las mejores prácticas de codificación en todos sus proyectos .NET y Go.

 

Qodana for .NET

 

Qodana es compatible con casi todas las inspecciones de .NET proporcionadas por Rider. Dado que la lista es muy larga, consulte la documentación de Rider para saber más sobre todas las inspecciones. A continuación, recopilamos algunos ejemplos de las inspecciones de .NET que Qodana puede ejecutar.

 

Orden no coherente de los bloqueos

 

Una de las principales incidencias al utilizar bloqueos para lograr la seguridad de los subprocesos es evitar los bloqueos, es decir, cuando los subprocesos se bloquean de forma simultanea entre sí para continuar la ejecución, por lo que no se produce ningún progreso. Con esta nueva inspección, Qodana destacará los ciclos que conducen a posibles bloqueos durante la ejecución.

 

 

Acceso a la variable capturada modificada

 

Qodana for .NET detecta el acceso a la variable capturada desde un método anónimo cuando la variable se modifica de forma externa.

 

 

Evitar el uso de la lambda ‘async’ cuando el tipo de delegado devuelve ‘void’

 

Esta inspección detecta el uso de expresiones lambda ‘async’: cualquier excepción no manejada por la lambda nunca afectará al subproceso de la llamada y no se capturará con la cláusula catch.

 

 

La comprobación de tipo y las transmisiones se pueden combinar

 

El operador is de comprobación de tipo en su forma clásica (Expression is Type) devuelve true solo cuando el tipo de ejecución de Expression es compatible con Type y el resultado de Expression no es null.

 

Cuando utilizamos is para comprobar la compatibilidad antes de la transmisión, como en el ejemplo siguiente, nos encontramos con al menos dos problemas:

 

  • Realizamos la comprobación de tipo dos veces sin motivo, lo que puede afectar al rendimiento si lo hacemos dentro de un bucle.
  • El hecho de que la ejecución del programa no llegue a la instrucción if si obj es null no queda claro de inmediato para quienes lean este código.

Qodana detectará este problema y le sugerirá que lo arregle en Rider.

 

 

La expresión lambda/el método anónimo no debe tener capturas del contexto contenedor

 

La expresión lambda/el método anónimo que se transfiere a un parámetro anotado por el atributo ‘[RequireStaticDelegate]’ no debe tener capturas del contexto que lo contiene (variables locales, funciones locales, referencia ‘this’) para evitar asignaciones del montón.

 

 

Para configurar el linter para .NET y ejecutar el análisis, consulte la documentación de Qodana.

 

Qodana for Go

 

Qodana 2022.3 está diseñado para ser compatible con todas las inspecciones proporcionadas por GoLand. Para ver la lista exhaustiva, consulte la documentación de GoLand. A continuación, se muestran ejemplos de algunas de las inspecciones de Go que ahora son compatibles con Qodana.

 

El argumento de marcador de posición ‘d.DeletedCount’ tiene el tipo incorrecto ‘int64’ (%s)

 

Esta inspección informa del uso incorrecto de fmt.Printf, fmt.Println y funciones de formateo e impresión similares.

 

En sus cadenas de formato, las funciones de formateo utilizan verbos de formateo, como %s, %d o %v.

 

Si los verbos de formateo se utilizan de forma incorrecta, el resultado de una función de formateo contendrá un error.

 

 

Error no solucionado

 

Esta inspección informa de las llamadas a funciones y métodos que no manejan el resultado de la llamada del tipo error.

 

Una API con estas funciones implica que su ejecución podría terminar sin éxito y devolvería un error. Las llamadas que no manejan el resultado del error podrían ser un indicio de mal uso de la API.

 

 

Dependencia no utilizada

 

Esta inspección informa de las dependencias no utilizadas en su proyecto. Es una buena práctica buscar las dependencias no utilizadas de forma regular, ya que reduce el tamaño de la biblioteca de su proyecto y mejora la capacidad de mantenimiento.

 

 

Para ver Qodana en acción y probar estas nuevas inspecciones, no dude en entrar en nuestra documentación y ver cómo configurar linters para Go.

 

Nuevas inspecciones

 

Además de añadir nuevos linters para .NET y Go, Qodana 2022.3 también incluye más de 100 nuevas inspecciones para los linters existentes. Veamos los ejemplos más destacados de inspecciones para Java, Kotlin y Python.

 

Inspecciones de Java y Kotlin

 

Hemos añadido más de 40 nuevas inspecciones a Qodana for JVM Community y Qodana for JVM.

 

DataFlowIssue

 

Esta inspección informa de las construcciones de código que siempre violan los contratos que aceptan valores null, que pueden lanzar excepciones o que son redundantes, en función del análisis del flujo de datos.

 

EscapedSpace

 

Java 15 introdujo la secuencia de escape de cadenas s para hacer visibles los espacios en blanco al final de los bloques de texto. En casi todos los demás contextos, especialmente en las expresiones regulares, esta secuencia de escape puede confundirse fácilmente con el s de una expresión regular que representa un espacio en blanco. En los literales de cadena de Java, debe escribirse como \s.

 

MismatchedJavadocCode

 

Esta inspección informa de los casos en los que el Javadoc de un método contradice de forma evidente la firma del método, como el comentario que dice «returns true» cuando el método devuelve una cadena.

 

Destructure

 

Esta inspección informa de las declaraciones en Kotlin que pueden ser desestructuradas.

 

UnresolvedRestParam

 

Ahora Qodana puede detectar declaraciones de métodos incoherentes en los servicios REST (como los parámetros @PathParam que no coinciden con un marcador de posición de la anotación @Get), ya que estos lanzarían excepciones durante la ejecución. 

 

ReactiveStreamsThrowInOperator

 

Esta nueva inspección detecta las declaraciones throw en el código del operador Reactor/RxJava en lugar de devolver los valores de error designados, lo que impide que los errores se sigan procesando. Por ejemplo, los ignora o los reemplaza con un valor alternativo.

 

 

 

Tenga en cuenta que esta versión de Qodana también incluye las nuevas inspecciones para Android de IntelliJ IDEA 2022.3 y Android Studio – Electric Eel | 2022.1.1.

 

Inspecciones de Python

 

También hemos añadido a Qodana for Python algunas inspecciones para Google App Engine que destacarán los problemas antes de que causen fallos en los entornos de producción. Por ejemplo, ahora puede detectar:

 

  • Consultas GQL que no cumplen con las restricciones de consultas permitidas en el servidor de Google App Engine.
  • Consultas GQL sin índices.
  • Usos de características de Python que están restringidas por el sandbox de Google App Engine.
  • Casos en los que el threadsafe no está habilitado con el controlador CGI.

Para excluir ciertas inspecciones de su análisis, puede personalizar su perfil de inspección por defecto o crear uno nuevo. Quizá también quiera que se lleven a cabo las inspecciones que son importantes para sus directrices de codificación. Consulte nuestra documentación sobre Qodana para obtener más información.

 

¡Eso es todo sobre el EAP de Qodana 2022.3! Esperamos que disfrute de esta nueva versión. Si tiene alguna sugerencia para futuros temas del blog o si desea saber más sobre cómo Qodana puede ayudarle a usted y a su negocio, publique un comentario aquí, etiquétenos en Twitter o póngase en contacto con nosotros en qodana-support@jetbrains.com.

 

¡Que tenga un desarrollo feliz y mantenga limpio su código!

 

El equipo de Qodana

Artículo original en inglés de:

 

Luiz Di Bella

Valerie Kuzmina

image description

Discover more