As etiquetas dos analisadores servem para identificar como uma solução foi resolvida.
Estas etiquetas podem depois ser usadas para:
Uma etiqueta é uma string formatada como: <category>:<thing>.
Suportamos quatro categorias diferentes, do nível mais elevado para o mais baixo:
| Categoria | Descrição | Especificidade | Exemplos |
|---|---|---|---|
paradigm |
Um paradigma de programação | Muito abstrato, não específico de um track |
imperative, functional
|
technique |
Uma técnica utilizada | Abstrato, a maioria não será específica de um track |
recursion, immutability
|
construct |
Um construto da linguagem | Muitos não serão específicos de um track |
bitwise-and, for-loop
|
uses |
Utilização específica da linguagem, como tipos ou métodos | Concreto, específico de um track |
DateTime.add_seconds, IEnumerable
|
Alguns exemplos de etiquetas:
paradigm:functionaltechnique:recursionconstruct:bitwise-anduses:DateTime.add_secondsEmbora os tracks sejam livres de etiquetar as soluções como entenderem, recomendamos que tentes usar a lista de etiquetas habitualmente usadas abaixo sempre que possível. Usar um conjunto comum de etiquetas permite-nos fazer coisas bem úteis, como ligar soluções entre tracks.
| Etiqueta | Descrição |
|---|---|
paradigm:array |
usa programação com arrays. |
paradigm:declarative |
usa programação declarativa. |
paradigm:functional |
usa programação funcional. |
paradigm:generic |
usa programação genérica. |
paradigm:imperative |
usa programação imperativa. |
paradigm:logic |
usa programação lógica. |
paradigm:meta |
usa metaprogramação. |
paradigm:object-oriented |
usa programação orientada a objetos. |
paradigm:procedural |
usa programação procedimental. |
paradigm:reflective |
usa programação reflexiva. |
paradigm:stack-oriented |
usa programação orientada à pilha. |
| Etiqueta | Descrição |
|---|---|
technique:bit-manipulation |
manipula bits, normalmente através de operadores bit a bit (por exemplo, AND, XOR ou deslocamento à esquerda) |
technique:bit-shifting |
desloca bits de um número |
technique:boolean-logic |
executa lógica booleana (AND, OR, NOT) |
technique:composition |
usa composição |
technique:concurrency |
executa código em simultâneo |
technique:enumeration |
enumera valores |
technique:error-handling |
trata erros |
technique:exceptions |
captura ou lança exceções |
technique:function-composition |
usa composição de funções |
technique:generator |
usa um gerador |
technique:higher-order-functions |
usa funções de ordem superior |
technique:immutability |
usa imutabilidade |
technique:immutable-collection |
usa uma coleção cujo conteúdo é imutável |
technique:inheritance |
usa herança |
technique:laziness |
produz valores de forma preguiçosa, só quando são necessários |
technique:locks |
usa locks para obter acesso exclusivo a recursos |
technique:looping |
usa ciclos |
technique:math |
usa matemática |
technique:memory-management |
gere a memória |
technique:ordering |
ordena dados |
technique:parallelism |
executa código em paralelo |
technique:parser |
faz o parsing de dados |
technique:pointers |
usa apontadores |
technique:randomness |
usa aleatoriedade |
technique:recursion |
usa recursão |
technique:regular-expression |
usa expressões regulares |
technique:short-circuiting |
usa curto-circuito para evitar avaliações desnecessárias |
technique:sorted-collection |
usa uma coleção cujos elementos estão sempre ordenados |
technique:sorting |
ordena dados |
technique:tail-call-optimization |
usa otimização de chamadas de cauda para uma recursão eficiente |
technique:type-conversion |
converte valores de um tipo para outro tipo |
technique:unsafe |
usa código unsafe (por exemplo, aritmética de apontadores) |
| Etiqueta | Descrição |
|---|---|
construct:abstract-class |
define uma classe abstrata |
construct:abstract-method |
define um método abstrato |
construct:add-assignment |
combina a adição com a atribuição |
construct:add |
usa a adição |
construct:array |
usa ou declara um array |
construct:assignment |
atribui ou liga um valor a uma variável/nome |
construct:async-await |
usa async/await
|
construct:attribute |
anota um membro com metadados |
construct:auto-implemented-property |
define uma propriedade de implementação automática |
construct:big-integer |
usa um inteiro grande |
construct:binary-number |
define um número em notação binária |
construct:bit-array |
usa ou declara um array de bits |
construct:bitwise-and-assignment |
combina um AND bit a bit com a atribuição |
construct:bitwise-and |
executa um AND bit a bit |
construct:bitwise-left-shift-assignment |
combina um deslocamento à esquerda bit a bit com a atribuição |
construct:bitwise-left-shift |
executa um deslocamento à esquerda bit a bit |
construct:bitwise-not |
executa um NOT bit a bit |
construct:bitwise-or-assignment |
combina um OR bit a bit com a atribuição |
construct:bitwise-or |
executa um OR bit a bit |
construct:bitwise-right-shift-assignment |
combina um deslocamento à direita bit a bit com a atribuição |
construct:bitwise-right-shift |
executa um deslocamento à direita bit a bit |
construct:bitwise-xor-assignment |
combina um XOR bit a bit com a atribuição |
construct:bitwise-xor |
executa um XOR bit a bit |
construct:block |
define um bloco que contém uma lista de instruções |
construct:boolean |
define ou usa um valor booleano |
construct:boxing |
usa boxing |
construct:break |
sai de um ciclo |
construct:byte |
usa um inteiro sem sinal de 8 bits |
construct:catch |
captura uma exceção |
construct:char |
usa um caráter |
construct:checked-arithmetic |
usa aritmética verificada (que protege contra transbordos) |
construct:class |
define uma classe |
construct:collection-initializer |
define os valores de uma coleção através de um inicializador |
construct:command |
define um comando |
construct:comment |
define um comentário |
construct:comparison-chaining |
encadeia chamadas de comparação |
construct:comparison |
compara dois valores quanto à sua ordem relativa |
construct:complex-number |
usa um número complexo |
construct:computed-string |
define uma string calculada |
construct:concatenation |
concatena valores |
construct:conditional-access |
acede a um método de forma condicional |
construct:conditional-operator |
usa um operador condicional ternário |
construct:conditional |
executa código de forma condicional |
construct:constant |
define um valor constante (imutável) |
construct:constructor |
define um construtor |
construct:continue |
passa para a iteração seguinte de um ciclo |
construct:conversion-operator |
define um operador de conversão |
construct:copy |
copia um valor |
construct:coroutine |
define ou usa uma corrotina |
construct:custom-attribute |
define um atributo personalizado |
construct:date-time |
usa um valor que representa uma combinação de data e hora |
construct:date |
usa um valor que representa uma data (sem hora) |
construct:decimal |
usa um número de vírgula flutuante de 128 bits |
construct:decrement |
decrementa um valor |
construct:default-interface-implementation |
define uma implementação predefinida numa interface |
construct:default |
define um valor predefinido (por exemplo, para um parâmetro) |
construct:destructuring |
descontrói um valor nas suas partes |
construct:dictionary-comprehension |
cria um dicionário através de uma compreensão |
construct:dictionary |
usa/define um dicionário/mapa |
construct:discard |
usa o valor especial de descarte |
construct:divide-assignment |
combina a divisão com a atribuição |
construct:divide |
usa a divisão |
construct:do-while-loop |
usa um ciclo do-while
|
construct:double |
usa um número de vírgula flutuante de 64 bits |
construct:else |
define um ramo else |
construct:enum |
define ou usa um enum (enumeração de valores) |
construct:equality |
compara a igualdade de dois valores |
construct:error |
define ou usa um erro |
construct:event |
define ou usa eventos |
construct:exception |
define ou usa exceções |
construct:explicit-conversion |
converte explicitamente um tipo noutro tipo |
construct:explicit-import |
importa apenas funcionalidade selecionada |
construct:exponentiation |
calcula a exponenciação de um valor |
construct:expression-bodied-member |
define um membro com corpo de expressão |
construct:extension-method |
define um método de extensão |
construct:field-access |
acede a um campo |
construct:field |
define um campo |
construct:finally |
usa o finally para garantir que um determinado bloco de código é sempre executado |
construct:flags-enum |
define ou usa um enum de flags |
construct:float |
usa um número de vírgula flutuante de 32 bits |
construct:floating-point-number |
usa um número de vírgula flutuante |
construct:for-loop |
usa um ciclo for
|
construct:foreach |
usa um ciclo foreach
|
construct:function-overloading |
usa sobrecarga de funções |
construct:function |
define uma função |
construct:generator |
define uma função ou método gerador |
construct:generic-function |
define uma função parametrizada com um ou mais tipos |
construct:generic-method |
define um método parametrizado com um ou mais tipos |
construct:generic-type |
define um tipo parametrizado com um ou mais tipos |
construct:getter |
define um getter |
construct:global-function |
define uma função disponível globalmente |
construct:global-variable |
define uma variável disponível globalmente |
construct:header |
define um ficheiro de cabeçalho |
construct:hexadecimal-number |
define um número em notação hexadecimal |
construct:if |
usa uma condicional if
|
construct:implicit-conversion |
converte implicitamente um tipo noutro tipo |
construct:implicit-loop |
percorre implicitamente uma coleção de valores |
construct:implicit-return |
devolve um valor implicitamente |
construct:import |
importa funcionalidade implementada noutro local (por exemplo, de um espaço de nomes/módulo) |
construct:increment |
incrementa um valor |
construct:index-operator |
define um operador para indexar um objeto |
construct:indexer |
define ou usa um indexador |
construct:indexing |
acede a um valor por índice |
construct:inequality |
compara a desigualdade de dois valores |
construct:infix-operator |
define um operador infixo |
construct:initialization |
inicializa um objeto após a criação |
construct:initializer-list |
inicializa os valores dos campos de um objeto |
construct:initializer |
inicializa um objeto |
construct:instance |
cria ou usa uma instância de um tipo |
construct:instantiation |
cria uma instância de um tipo |
construct:int |
usa um inteiro com sinal de 32 bits |
construct:integral-number |
usa um número inteiro |
construct:interface |
define uma interface |
construct:invocation |
invoca um método/função |
construct:iterator |
define uma função ou método que pode ser iterado |
construct:jagged-array |
usa um array irregular (um array de arrays) |
construct:lambda |
define uma lambda (também conhecida como "função anónima") |
construct:linked-list |
usa uma lista ligada |
construct:linq |
usa LINQ |
construct:list-comprehension |
constrói uma lista através de uma compreensão |
construct:list |
usa uma lista |
construct:local-function |
define uma função local |
construct:local-variable |
define uma variável local |
construct:lock |
usa um lock |
construct:logical-and |
executa um AND lógico |
construct:logical-not |
executa um NOT lógico |
construct:logical-or |
executa um OR lógico |
construct:long |
usa um inteiro com sinal de 64 bits |
construct:loop |
define um ciclo |
construct:macro |
define uma macro |
construct:membership-test |
testa se um valor pertence a outro valor |
construct:metatable |
define uma metatabela |
construct:method-chaining |
encadeia várias chamadas de métodos |
construct:method-overloading |
usa sobrecarga de métodos |
construct:method-override |
define um método substituído |
construct:method |
define um método |
construct:module |
define um módulo (agrupamento de código) |
construct:modulo-assignment |
combina o resto da divisão com a atribuição |
construct:modulo |
usa o resto da divisão |
construct:multi-dimensional-array |
usa um array com várias dimensões |
construct:multiline-string |
define uma string com várias linhas |
construct:multiple-assignment |
atribui vários valores de uma só vez |
construct:multiple-dispatch |
usa despacho múltiplo |
construct:multiply-assignment |
combina a multiplicação com a atribuição |
construct:multiply |
usa a multiplicação |
construct:named-argument |
passa um argumento por nome |
construct:namespace |
define um espaço de nomes (agrupamento de código) |
construct:nested-function |
define uma função aninhada |
construct:nested-type |
define um tipo aninhado |
construct:nesting |
usa aninhamento |
construct:nint |
usa um inteiro com sinal específico da plataforma (32 ou 64 bits) |
construct:nuint |
usa um inteiro sem sinal específico da plataforma (32 ou 64 bits) |
construct:null |
usa null/nil para representar a ausência de um valor |
construct:nullability |
lida com valores null/nil |
construct:number |
usa um número (com ou sem sinal) |
construct:object-initializer |
define os valores de um objeto através de um inicializador |
construct:octal-number |
define um número em notação octal |
construct:operator-overloading |
usa sobrecarga de operadores |
construct:option |
usa um tipo option |
construct:optional-parameter |
define um parâmetro opcional |
construct:overflow |
usa transbordo aritmético |
construct:parameter |
define um parâmetro |
construct:parenthesized-expression |
envolve uma expressão entre parênteses |
construct:pattern-matching |
usa correspondência de padrões |
construct:pattern |
define um padrão usado na correspondência de padrões |
construct:pipe-backward |
usa um pipe para trás |
construct:pipe-forward |
usa um pipe para a frente |
construct:pipeline |
define um pipeline |
construct:point-free |
define funções sem os argumentos sobre os quais operam |
construct:pointer |
usa um apontador |
construct:postfix-decrement |
decrementa um valor usando notação posfixa |
construct:postfix-increment |
incrementa um valor usando notação posfixa |
construct:prefix-decrement |
decrementa um valor usando notação prefixa |
construct:prefix-increment |
incrementa um valor usando notação prefixa |
construct:print |
imprime um valor na consola |
construct:property |
define uma propriedade (getter/setter) |
construct:query-expression |
consulta dados através de uma expressão |
construct:queue |
usa uma fila |
construct:range |
define um intervalo |
construct:read-only |
define um valor só de leitura |
construct:record |
define um registo |
construct:regular-expression |
define ou usa uma expressão regular |
construct:result |
usa um tipo result |
construct:return-type |
define o tipo devolvido de uma função ou método |
construct:return |
sai de uma função/método |
construct:sbyte |
usa um inteiro com sinal de 8 bits |
construct:scientific-notation-number |
define um número em notação científica |
construct:set-comprehension |
cria um conjunto através de uma compreensão |
construct:set |
usa um conjunto |
construct:setter |
define um setter |
construct:short |
usa um inteiro com sinal de 16 bits |
construct:slice |
usa um slice |
construct:stack |
usa uma pilha |
construct:static-field |
define um campo estático |
construct:static-method |
define um método estático |
construct:string-formatting |
constrói uma string através de uma string de formatação |
construct:string-interpolation |
define uma string interpolada |
construct:string |
define uma string |
construct:struct |
define uma struct |
construct:subtract-assignment |
combina a subtração com a atribuição |
construct:subtract |
usa a subtração |
construct:sum-type |
define um tipo soma |
construct:switch |
usa um switch
|
construct:table |
define uma tabela |
construct:template-alias |
define um alias para um template |
construct:template-parameter |
define um parâmetro de template |
construct:template |
define um template |
construct:throw |
lança uma exceção |
construct:time |
usa um objeto que representa a hora |
construct:try |
trata uma exceção explicitamente |
construct:tuple |
usa um tuplo |
construct:type-alias |
define um alias para um tipo |
construct:type-conversion |
converte (faz cast de) um valor para outro tipo |
construct:type-extension |
estende um tipo com nova funcionalidade |
construct:type-inference |
infere automaticamente o tipo de um valor/função |
construct:type-test |
testa se um valor tem um tipo específico |
construct:uint |
usa um inteiro sem sinal de 32 bits |
construct:ulong |
usa um inteiro sem sinal de 64 bits |
construct:unary-minus |
usa um menos unário |
construct:unary-plus |
usa um mais unário |
construct:underscored-number |
usa um número com sublinhados como separadores de algarismos |
construct:union-type |
define um tipo união |
construct:user-defined-exception |
define uma exceção personalizada, definida pelo utilizador |
construct:ushort |
usa um inteiro sem sinal de 16 bits |
construct:using-directive |
usa código de outro ficheiro |
construct:using-statement |
atribui e liberta um valor através da instrução using |
construct:varargs |
define um parâmetro que permite passar zero ou mais valores |
construct:variable |
declara uma variável |
construct:vector |
usa um vetor |
construct:verbatim-string |
usa uma string literal (sem sequências de escape) |
construct:virtual-method |
define um método virtual |
construct:visibility-modifiers |
especifica a visibilidade de um construto (por exemplo, um método ou uma classe) |
construct:while-loop |
usa um ciclo while
|
construct:yield |
produz um valor num ciclo de forma preguiçosa |
Como esta categoria é específica de cada linguagem, não há aqui etiquetas habitualmente usadas.