Freecodecamp: O código comentado é considerado para validação de código ao invés de apenas comentário!

Criado em 31 mai. 2017  ·  15Comentários  ·  Fonte: freeCodeCamp/freeCodeCamp



[Usando objetos para pesquisa]


link para o desafio:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

descrição do problema


Neste desafio, tive que produzir uma versão de objeto de instruções switch. Como eu tinha que lembrar cada membro de _'caso 'de switch_ para produzir uma versão de objeto , comentei toda a parte de switch e redigitei a versão de objeto correta.
Porém, não consegui passar no teste.
Isso se deve ao teste de verificação de
You should not use case, switch, or if statements

Ao comentar o switch, ele não deve validar o uso de _switch_ e considerá-lo apenas como um comentário.

Informação do navegador

  • Nome do navegador, versão: Google Chrome
  • Sistema operacional: Windows 10
  • Celular, desktop ou tablet: desktop

Seu código

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

freecodecamp

help wanted blocked on the roadmap bug

Comentários muito úteis

@ Saif-Shines Sim, estamos cientes disso como um problema existente no site principal e não temos a infraestrutura para ter um analisador estrito, se possível.

A única maneira atualmente seria avançar excluindo os comentários.

Todos 15 comentários

@ Saif-Shines Sim, estamos cientes disso como um problema existente no site principal e não temos a infraestrutura para ter um analisador estrito, se possível.

A única maneira atualmente seria avançar excluindo os comentários.

Contribuidores em potencial, isso precisa ser investigado por aqui:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

Logo no primeiro desafio do Javascript básico, deparei com um problema semelhante ao tentar 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 */

Nesse caso, como em meu segundo comentário uso a palavra "função", lançaria:
Error: SyntaxError: Unsafe or unfinished function declaration

Talvez a execução de testes para contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) vez de contents resolva esse problema? (significando o problema geral, porque no meu caso este teste específico ainda falharia devido ao conteúdo estar vazio após a substituição dos comentários)

Não podemos fazer algo como:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

Eu gostaria de assumir isso.

Estou interessado nesta questão, pode ser atribuído a mim e você pode me direcionar para os arquivos que precisam ser alterados.

Uma vez que não há nenhuma atualização sobre isso em mais de uma semana, vou abordar isso. Espero que esteja tudo bem com vocês @ Survivor75 e @ knrt10

@raisedadead : Eu acredito que a solução é muito mais simples do que pensávamos.

Executamos assertions em code que é uma string. Então, por que simplesmente não rodamos uma regex nesta string e removemos comentários antes que ela seja usada para validação?

Por exemplo, em - client/frame-runner.js , buscamos o conteúdo do editor codemirror como

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

Em vez de passar diretamente o código como está, eu executaria um regex para me livrar de comentários como

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

Quando feito dessa forma, o executor de teste nunca recebe os comentários no código e está tudo certo.

Eu validei este regex aqui - http://regexr.com/3ghvi

NOTA:

  • Isso não leva em consideração os comentários HTML, pois há alguns desafios no início que validam a existência de comentários HTML.
  • O padrão de URL foi excluído.
  • Como esta regex substitui um caractere que leva a // , não estamos substituindo os comentários embutidos que não existem em suas próprias linhas.

@adityaparab é legal: +1:.
Quase me esqueci disso ao me envolver em outra coisa.
No entanto, eu criei esse código, se você vai trabalhar nisso, dê uma olhada na função abaixo.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

Isso removerá qualquer código comentado :)

Infelizmente, a única solução real aqui é usar ASTs para testes. Eu discuti isso com @QuincyLarson sobre como adicionar uma API que expõe o JS AST produzido por babel e adicionar uma API semelhante à interface de plug-in do eslint. Isso pode ser um pouco errado, pois a prioridade é seguir em frente com os desafios de reação e, em seguida, generalizar a maneira como os próprios desafios são importados dos arquivos.

Acabei de encontrar esse problema com comentários contendo a palavra "função" ... Fiquei realmente confuso até que alguém nos fóruns explicou o que estava acontecendo. Espero que este problema seja corrigido em breve! Talvez deva haver alguma mensagem exibida para os usuários avisando-os sobre os problemas do analisador em relação aos comentários nos desafios.

Veja também:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

@SuperGeniusZeb Obrigado por relatar isso e confirmar as etapas para reproduzi-lo.

Estou encerrando este problema como obsoleto, pois ele não esteve ativo recentemente. Se você acha que isso ainda é relevante para a plataforma recém-atualizada, explique o motivo e reabra-a.

@QuincyLarson

No site atualizado, os comentários ainda estão sendo lidos erroneamente como código pelos testes de desafio. Considere este desafio, por exemplo:

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

Usando o código a seguir, posso passar no teste (que verifica se grid-column-gap está definido como 20px ), embora grid-column-gap: 20px esteja em um comentário.

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

Por favor, reabra este problema.

@SuperGeniusZeb Você pode abrir um novo problema em https://github.com/freeCodeCamp/learn/issues ? Muito obrigado.

@raisedadead Acabei de criar um novo problema lá:
https://github.com/freeCodeCamp/learn/issues/165

Esta página foi útil?
0 / 5 - 0 avaliações