Freecodecamp: ¡El código comentado se considera para la validación del código en lugar de solo un comentario!

Creado en 31 may. 2017  ·  15Comentarios  ·  Fuente: freeCodeCamp/freeCodeCamp



[Uso de objetos para la búsqueda]


enlace para el desafío:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

descripcion del problema


En este desafío, tuve que producir una versión de objeto de declaraciones de cambio. Como tenía que recordar cada miembro _'case 'de switch_ para producir una versión del objeto , había comentado toda la parte del switch y volví a escribir la versión correcta del objeto.
Sin embargo, no he podido pasar la prueba.
Esto se debe a la verificación de prueba de
You should not use case, switch, or if statements

Al comentar el cambio, no debe validar el uso de _switch_ y considerarlo solo como un comentario.

Información del navegador

  • Nombre del navegador, versión: Google Chrome
  • Sistema operativo: Windows 10
  • Móvil, escritorio o tableta: escritorio

Tu codigo

// Setup
function phoneticLookup(val) {
  var result = "";

  // Only change code below this line
   var lookup = {
    "alpha":"Adams",
    "bravo":"Boston",
    "charlie":"Chicago",
    "delta":"Denver",
    "echo":"Easy",
    "foxtrot":"Frank"
    };

  result = lookup[val];

  /*
  switch(val) {
    case "alpha": 
      result = "Adams";
      break;
    case "bravo": 
      result = "Boston";
      break;
    case "charlie": 
      result = "Chicago";
      break;
    case "delta": 
      result = "Denver";
      break;
    case "echo": 
      result = "Easy";
      break;
    case "foxtrot": 
      result = "Frank";
  }
*/
  // Only change code above this line
  return result;
}

// Change this value to test
phoneticLookup("charlie");



Captura de pantalla

freecodecamp

help wanted blocked on the roadmap bug

Comentario más útil

@ Saif-Shines Sí, somos conscientes de que esto es un problema existente en el sitio web principal y carecemos de la infraestructura para tener un analizador estricto.

La única forma actualmente sería avanzar eliminando los comentarios.

Todos 15 comentarios

@ Saif-Shines Sí, somos conscientes de que esto es un problema existente en el sitio web principal y carecemos de la infraestructura para tener un analizador estricto.

La única forma actualmente sería avanzar eliminando los comentarios.

Contribuyentes potenciales, esto debe investigarse por aquí:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

En el primer desafío de Basic Javascript me encontré con un problema similar al intentar comentar:

// Use comments only when they are actually needed

/* Sometimes, using descriptive names for variables and functions is way better 
than leaving code smell all over your code */

En este caso, debido a que en mi segundo comentario uso la palabra "función", arrojaría:
Error: SyntaxError: Unsafe or unfinished function declaration

¿Quizás ejecutar pruebas para contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) lugar de contents podría resolver ese problema? (es decir, el problema general, porque en mi caso, esta prueba específica aún fallaría debido a que el contenido está vacío después de reemplazar los comentarios)

¿No podemos hacer algo como:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

Me gustaría encargarme de esto.

Estoy interesado en este problema, ¿se me puede asignar esto y me pueden dirigir a los archivos que deben cambiarse?

Como no hay actualizaciones sobre esto en más de una semana, lo abordaré. Espero que esté bien con ustedes @ Survivor75 y @ knrt10

@raisedadead : Creo que la solución es mucho más simple de lo que pensamos.

Ejecutamos aserciones en code que es una cadena. Entonces, ¿por qué no ejecutamos una expresión regular en esta cadena y eliminamos los comentarios antes de que se use para la validación?

Por ejemplo, en - client/frame-runner.js , obtenemos contenido del editor codemirror como

const editor = { getValue() { return source; } };
const code = source;

En lugar de pasar directamente el código tal como está, ejecutaría una expresión regular para deshacerme de comentarios como

const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');

Cuando se hace de esta manera, el ejecutor de pruebas nunca recibe los comentarios en el código y todo está bien.

He validado esta expresión regular aquí: http://regexr.com/3ghvi

NOTA:

  • Esto no considera comentarios HTML ya que existen algunos desafíos al principio que validan la existencia de comentarios HTML.
  • Se excluye el patrón de URL.
  • Como esta expresión regular reemplaza un carácter que lleva a // , no reemplazaremos los comentarios en línea que no existen en sus propias líneas.

@adityaparab es genial: +1:.
Casi lo olvido cuando me involucré en otra cosa.
Sin embargo, se me ocurrió este código, si va a trabajar en esto, eche un vistazo a la función a continuación.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

Esto eliminará cualquier código comentado :)

Desafortunadamente, la única solución real aquí es usar AST para las pruebas. Hablé de esto con

Me encontré con este problema con comentarios que contenían la palabra "función" ... Me confundí mucho hasta que alguien de los foros explicó lo que estaba pasando. ¡Espero que este problema se solucione pronto! ¿Quizás debería mostrarse algún mensaje a los usuarios advirtiéndoles sobre los problemas del analizador con respecto a los comentarios en los desafíos?

Ver también:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

@SuperGeniusZeb Gracias por informar de esto y confirmar los pasos para reproducirlo.

Estoy cerrando este problema como obsoleto ya que no ha estado activo últimamente. Si cree que esto sigue siendo relevante para la plataforma recién actualizada, explique por qué y luego vuelva a abrirla.

@QuincyLarson

En el sitio actualizado, los comentarios todavía se leen erróneamente como código por las pruebas de desafío. Tome este desafío, por ejemplo:

https://learn.freecodecamp.org/responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap

Usando el siguiente código, puedo pasar la prueba (que verifica que grid-column-gap se establezca en 20px ), aunque grid-column-gap: 20px está en un comentario.

<style>
  .d1{background:LightSkyBlue;}
  .d2{background:LightSalmon;}
  .d3{background:PaleTurquoise;}
  .d4{background:LightPink;}
  .d5{background:PaleGreen;}

  .container {
    font-size: 40px;
    min-height: 300px;
    width: 100%;
    background: LightGray;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    /* add your code below this line */
    grid-column-gap: 10px;
    // grid-column-gap: 20px;
    /* add your code above this line */
  }
</style>

<div class="container">
  <div class="d1">1</div>
  <div class="d2">2</div>
  <div class="d3">3</div>
  <div class="d4">4</div>
  <div class="d5">5</div>
</div>

Vuelva a abrir este problema.

@SuperGeniusZeb ¿Puede abrir una nueva edición en https://github.com/freeCodeCamp/learn/issues ? Muchas gracias.

@raisedadead Acabo de crear un nuevo problema allí:
https://github.com/freeCodeCamp/learn/issues/165

¿Fue útil esta página
0 / 5 - 0 calificaciones