Freecodecamp: Der kommentierte Code wird für die Codevalidierung berücksichtigt und nicht nur für Kommentare!

Erstellt am 31. Mai 2017  ·  15Kommentare  ·  Quelle: freeCodeCamp/freeCodeCamp



[Verwenden von Objekten zur Suche]


Link für die Herausforderung:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

Fehlerbeschreibung


Bei dieser Herausforderung musste ich eine Objektversion von switch-Anweisungen erstellen. Da ich mich an jedes "case" -Mitglied von switch_ erinnern musste, um eine Objektversion zu erstellen, hatte ich den gesamten Switch-Teil auskommentiert und die richtige Objektversion erneut eingegeben.
Allerdings kann ich den Test nicht bestehen.
Dies ist auf die Testprüfung von zurückzuführen
You should not use case, switch, or if statements

Während des Auskommentierens des Schalters sollte die Verwendung von _switch_ nicht validiert und nur als Kommentar betrachtet werden.

Browser-Informationen

  • Browsername, Version: Google Chrome
  • Betriebssystem: Windows 10
  • Mobil, Desktop oder Tablet: Desktop

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



Bildschirmfoto

freecodecamp

help wanted blocked on the roadmap bug

Hilfreichster Kommentar

@ Saif-Shines Ja, wir sind uns dessen als vorhandenes Problem auf der Hauptwebsite bewusst, und es fehlt uns die Infrastruktur, um einen strengen Parser zu haben, wenn Sie dürfen.

Die einzige Möglichkeit wäre derzeit, durch Löschen der Kommentare fortzufahren.

Alle 15 Kommentare

@ Saif-Shines Ja, wir sind uns dessen als vorhandenes Problem auf der Hauptwebsite bewusst, und es fehlt uns die Infrastruktur, um einen strengen Parser zu haben, wenn Sie dürfen.

Die einzige Möglichkeit wäre derzeit, durch Löschen der Kommentare fortzufahren.

Potenzielle Mitwirkende, dies muss hier untersucht werden:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

Bei der allerersten Herausforderung von Basic Javascript stieß ich beim Versuch, einen Kommentar abzugeben, auf ein ähnliches Problem:

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

In diesem Fall würde, weil ich in meinem zweiten Kommentar das Wort "Funktion" verwende, Folgendes geworfen:
Error: SyntaxError: Unsafe or unfinished function declaration

Vielleicht könnte das Ausführen von Tests für contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) anstelle von contents dieses Problem lösen? (Dies bedeutet das allgemeine Problem, da in meinem Fall dieser spezielle Test immer noch fehlschlagen würde, weil der Inhalt nach dem Ersetzen von Kommentaren leer ist.)

Können wir so etwas nicht tun:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

Ich würde das gerne übernehmen.

Ich bin an diesem Problem interessiert. Kann es mir zugewiesen werden und können Sie mich zu den Dateien weiterleiten, die geändert werden müssen?

Da es in mehr als einer Woche kein Update dazu gibt, werde ich darauf eingehen. Hoffe es ist okay mit euch @ Survivor75 und @ knrt10

@raisedadead : Ich glaube, die Lösung ist viel einfacher als wir gedacht haben.

Wir führen Assertions für code dem es sich um eine Zeichenfolge handelt. Warum führen wir nicht einfach einen regulären Ausdruck für diese Zeichenfolge aus und entfernen Kommentare, bevor sie zur Validierung verwendet werden?

Zum Beispiel rufen wir in - client/frame-runner.js Inhalte des Codemirror-Editors wie ab

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

Anstatt den Code so wie er ist direkt zu übergeben, würde ich einen regulären Ausdruck ausführen, um Kommentare wie zu entfernen

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

Auf diese Weise erhält der Testläufer niemals die Kommentare im Code und alles ist gut.

Ich habe diesen regulären Ausdruck hier validiert - http://regexr.com/3ghvi

HINWEIS:

  • Dies berücksichtigt keine HTML-Kommentare, da es zu Beginn einige Herausforderungen gibt, die das Vorhandensein von HTML-Kommentaren bestätigen.
  • URL-Muster ist ausgeschlossen.
  • Da dieser reguläre Ausdruck ein Zeichen ersetzt, das zu // , ersetzen wir nicht die Inline-Kommentare, die nicht in eigenen Zeilen vorhanden sind.

@adityaparab es ist cool: +1 :.
Ich hätte es fast vergessen, als ich mich auf etwas anderes einließ.
Ich habe mir jedoch diesen Code ausgedacht. Wenn Sie daran arbeiten möchten, sehen Sie sich die folgende Funktion an.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

Dadurch werden alle kommentierten Codes entfernt :)

Leider besteht die einzige wirkliche Lösung darin, ASTs für Tests zu verwenden. Ich habe dies mit @QuincyLarson über das Hinzufügen einer API besprochen, die den von babel erzeugten JS AST verfügbar macht, und eine API hinzugefügt, die der Plugin-Oberfläche von eslint ähnelt. Dies kann etwas abweichen, da es vorrangig darum geht, die Reaktionsherausforderungen fortzusetzen und dann die Art und Weise zu verallgemeinern, wie Herausforderungen selbst aus Dateien importiert werden.

Ich bin gerade auf dieses Problem mit Kommentaren gestoßen, die das Wort "Funktion" enthalten ... Ich war wirklich verwirrt, bis jemand in einem der Foren erklärte, was los war. Hoffe, dieses Problem wird bald behoben! Vielleicht sollte den Benutzern eine Meldung angezeigt werden, die sie vor den Parser-Problemen bezüglich der Kommentare in den Herausforderungen warnt?

Siehe auch:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

@SuperGeniusZeb Vielen Dank, dass Sie dies gemeldet und die Schritte zur Reproduktion bestätigt haben.

Ich schließe dieses Problem als veraltet, da es in letzter Zeit nicht aktiv war. Wenn Sie der Meinung sind, dass dies für die neu aktualisierte Plattform immer noch relevant ist, erklären Sie bitte, warum und öffnen Sie sie erneut.

@ QuincyLarson

Auf der aktualisierten Site werden Kommentare von den Challenge-Tests immer noch fälschlicherweise als Code gelesen. Nehmen Sie diese Herausforderung zum Beispiel:

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

Mit dem folgenden Code kann ich den Test bestehen (bei dem überprüft wird, ob grid-column-gap: 20px grid-column-gap auf 20px ), obwohl grid-column-gap: 20px in einem Kommentar enthalten ist.

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

Bitte öffnen Sie dieses Problem erneut.

@SuperGeniusZeb Können Sie bitte eine neue Ausgabe unter https://github.com/freeCodeCamp/learn/issues eröffnen? Vielen Dank.

@raisedadead Ich habe dort gerade eine neue Ausgabe erstellt:
https://github.com/freeCodeCamp/learn/issues/165

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen