O exemplo mais popular de código Java no StackOverflow apresenta um erro

O mais popular Exemplo de código Java, publicado no StackOverflow, virado com um erro que leva à saída de um resultado incorreto sob certas condições. O código em questão foi publicado em 2010 e já acumulou mais de mil recomendações, tendo também sido copiado em muitos projetos e aparece em repositórios no GitHub cerca de 7 mil vezes. Vale ressaltar que o erro não foi encontrado pelos usuários que copiaram esse código em seus projetos, mas pelo autor original do conselho.

O código em questão converteu o tamanho do byte em um formato legível, por exemplo, convertendo 110592 em "110.6 kB" ou "108.0 KiB". O código foi proposto como uma versão otimizada para logaritmo do conselho proposto anteriormente, em que o valor era determinado com base na divisão sequencial do valor original em um loop por 1018, 1015, 1012, 1019.
106, 103 e 100, desde que o divisor seja maior que o valor do byte original. Devido a cálculos desleixados na versão otimizada (estouro de valor longo), o resultado ao processar números muito grandes (exabytes) não correspondia à realidade.

O autor da assessoria também procurou chamar a atenção para o problema de copiar exemplos sem citar a fonte e sem indicar a licença. De acordo com dados anteriores conduziu pesquisas 46% dos desenvolvedores copiaram código do StackOverflow sem atribuição, 75% não sabiam que o código estava licenciado sob CC BY-SA e 67% não sabiam que isso exigia atribuição.

Em Conforme De acordo com outro estudo, copiar exemplos de código envolve não apenas o risco de erros no código, mas também de vulnerabilidades. Por exemplo, depois de analisar 72483 exemplos de código C++ no StackOverflow, os pesquisadores identificaram vulnerabilidades graves em 69 exemplos (o que representa 0.09%) incluídos na lista das recomendações mais populares. Depois de analisada a presença deste código no GitHub, foi revelado que o código vulnerável copiado do StackOverflow estava presente em 2859 projetos.

Fonte: opennet.ru

Adicionar um comentário