Freecodecamp: Le code commenté est considéré pour la validation du code plutôt que pour un simple commentaire!

Créé le 31 mai 2017  ·  15Commentaires  ·  Source: freeCodeCamp/freeCodeCamp



[Utilisation d'objets pour la recherche]


lien pour le défi:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

Description du problème


Dans ce défi, j'ai dû produire une version objet , j'avais commenté toute la partie switch et retapé la version correcte de l'objet.
Cependant, je n'ai pas réussi à passer le test.
Cela est dû au test de vérification de
You should not use case, switch, or if statements

Lors de la mise en commentaire du commutateur, il ne doit pas valider l'utilisation de _switch_ et le considérer comme un commentaire.

Informations sur le navigateur

  • Nom du navigateur, version: Google Chrome
  • Système d'exploitation: Windows 10
  • Mobile, ordinateur de bureau ou tablette: ordinateur de bureau

Votre code

// 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");



Capture d'écran

freecodecamp

help wanted blocked on the roadmap bug

Commentaire le plus utile

@ Saif-Shines Oui, nous sommes conscients de cela comme un problème existant sur le site Web principal, et nous n'avons pas l'infrastructure nécessaire pour avoir un analyseur strict si vous le pouvez.

Le seul moyen actuellement serait d'aller de l'avant en supprimant les commentaires.

Tous les 15 commentaires

@ Saif-Shines Oui, nous sommes conscients de cela comme un problème existant sur le site Web principal, et nous n'avons pas l'infrastructure nécessaire pour avoir un analyseur strict si vous le pouvez.

Le seul moyen actuellement serait d'aller de l'avant en supprimant les commentaires.

Contributeurs potentiels, cela doit être étudié ici:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

Lors du tout premier défi de Basic Javascript, j'ai rencontré un problème similaire en essayant de commenter:

// 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 */

Dans ce cas, parce que dans mon deuxième commentaire j'utilise le mot «fonction», je lancerais:
Error: SyntaxError: Unsafe or unfinished function declaration

Peut-être que l'exécution de tests pour contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) au lieu de contents pourrait résoudre ce problème? (c'est-à-dire le problème général, car dans mon cas, ce test spécifique échouerait toujours en raison du contenu vide après le remplacement des commentaires)

Ne pouvons-nous pas faire quelque chose comme:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

Je voudrais aborder cette question.

Je suis intéressé par ce problème, peut-il m'être attribué et pouvez-vous me diriger vers les fichiers à modifier.

Puisqu'il n'y a pas de mise à jour à ce sujet dans plus d'une semaine, je vais en parler. J'espère que tout va bien avec vous les gars @ Survivor75 et @ knrt10

@raisedadead : Je pense que la solution est bien plus simple que nous ne le pensions.

Nous exécutons des assertions sur code qui est une chaîne. Alors pourquoi ne pas simplement exécuter une expression régulière sur cette chaîne et supprimer les commentaires avant qu'elle ne soit utilisée pour la validation?

Par exemple dans - client/frame-runner.js , nous récupérons le contenu de l'éditeur de codemirror comme

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

Au lieu de passer directement le code tel quel, j'exécuterais une regex pour se débarrasser des commentaires comme

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

Lorsque cela est fait de cette façon, le testeur ne reçoit jamais les commentaires dans le code et tout va bien.

J'ai validé cette regex ici - http://regexr.com/3ghvi

REMARQUE:

  • Cela ne prend pas en compte les commentaires HTML car il y a des défis au début qui valident l'existence des commentaires HTML.
  • Le modèle d'URL est exclu.
  • Comme cette expression régulière remplace un caractère menant à // nous ne remplaçons pas les commentaires en ligne qui n'existent pas sur leurs propres lignes.

@adityaparab c'est cool: +1
J'en ai presque oublié car je me suis engagé dans autre chose.
Cependant, je suis venu avec ce code, si vous allez travailler dessus, jetez un œil à la fonction ci-dessous.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

Cela supprimera tout code commenté :)

Malheureusement, la seule vraie solution ici est d'utiliser les AST pour les tests. J'ai discuté de cela avec @QuincyLarson à propos de l'ajout d'une API qui expose le JS AST produit par babel et d'ajouter une API similaire à l'interface du plugin eslint. Cela peut être un peu décevant car la priorité est de passer aux défis de réaction, puis de généraliser la façon dont les défis eux-mêmes sont importés à partir de fichiers.

Je viens de rencontrer ce problème avec des commentaires contenant le mot «fonction» ... Je suis devenu vraiment confus jusqu'à ce que quelqu'un sur les forums explique ce qui se passait. J'espère que ce problème sera bientôt résolu! Peut-être qu'un message devrait-il être affiché aux utilisateurs pour les avertir des problèmes d'analyseur concernant les commentaires dans les défis?

Voir également:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

@SuperGeniusZeb Merci d'avoir signalé cela et d'avoir confirmé les étapes pour le reproduire.

Je ferme ce problème comme périmé car il n'a pas été actif ces derniers temps. Si vous pensez que cela est toujours pertinent pour la plate-forme récemment mise à jour, veuillez expliquer pourquoi, puis rouvrez-la.

@QuincyLarson

Dans le site mis à jour, les commentaires sont toujours lus par erreur comme du code par les tests de défi. Prenez ce défi par exemple:

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

En utilisant le code suivant, je peux passer le test (qui vérifie que grid-column-gap doit être défini sur 20px ), même si grid-column-gap: 20px est dans un commentaire.

<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>

Veuillez rouvrir ce numéro.

@SuperGeniusZeb Pouvez-vous ouvrir un nouveau numéro sur https://github.com/freeCodeCamp/learn/issues ? Merci beaucoup.

@raisedadead Je viens de créer un nouveau numéro là-bas:
https://github.com/freeCodeCamp/learn/issues/165

Cette page vous a été utile?
0 / 5 - 0 notes