Shotnest

Shotnest · Biblioteca

Compara código sin suponer igualdad de ejecución

Compara dos fragmentos de código en la herramienta de texto de Shotnest y descubre por qué if (count > 0) e if (count >= 0) siguen compartiendo 0,778 de sus términos.

Qué hace la comparación con el código

La herramienta de comparación pasa a minúsculas ambas entradas, aplica la misma conversión de caracteres que usa Shotnest en la búsqueda (sin acentos y con las letras de ancho completo pasadas a ancho medio), reduce cada secuencia de espacios a uno solo y luego divide por los espacios. Lo que indica es la proporción de términos distintos que ambos textos tienen en común, además de los términos que solo aparecen en un lado. La sangría, los saltos de línea y las mayúsculas desaparecen antes de ese paso, algo práctico para la prosa y arriesgado para el código.

No se ejecuta nada. La página trata el fragmento pegado como texto sin formato y muestra el resultado sin convertirlo en marcado, así que las cifras describen caracteres, no comportamiento.

Prepara los dos fragmentos

  1. Pega cada fragmento exactamente como se capturó, con sus llaves y operadores.
  2. Lee primero la línea «Exactamente iguales»; es la única comprobación que conserva mayúsculas y espacios.
  3. Después lee «Iguales tras normalizar» y el valor de coincidencia como datos independientes.
  4. Abre las listas de términos que solo están en el primer texto y solo en el segundo; los operadores y la puntuación pegada suelen aparecer ahí.
  5. Vuelve a la captura para todo lo que las listas de términos no pueden mostrar, como la sangría en un lenguaje en el que importa.

Dos fragmentos, un operador cambiado

Primer texto: «if (count > 0) { return count; }» escrito en tres líneas. Segundo texto: la misma instrucción en una sola línea con >= en lugar de >. Tras normalizar, los saltos de línea han desaparecido, así que los únicos términos distintos son > y >=. Se comparten siete de los nueve términos distintos, lo que da 7 ÷ 9.

Exactamente iguales
No
Iguales tras normalizar
No
Coincidencia de palabras
0,7777777777777778
Solo en el primer texto
>
Solo en el segundo texto
>=

Un segundo par muestra el riesgo contrario: «const Total = 1;» y «const total = 1;» aparecen como iguales tras normalizar con una coincidencia de 1, aunque muchos lenguajes tratan Total y total como nombres distintos.

Errores con texto de código

Dónde se detiene la comparación

La coincidencia de términos es una medida de texto. Ignora el orden, los términos repetidos y los espacios, así que no puede decirte si el código compila o devuelve el mismo valor. En la app Shotnest, la captura de un código va al estante Código cuando tres o más líneas empiezan como código (import, def, return y similares); ese estante sirve para volver a encontrarla, y ejecutarlo es tarea de tu propio entorno.