Verificar a lógica do inquérito - Avançado
From LimeSurvey Manual
Geral
Uma opção importante que ajuda a criar e a manter facilmente inquéritos complexos é Verificar a lógica do inquérito.
Durante o desenvolvimento e os testes do inquérito, e antes de o ativar, é muito importante validar a lógica do inquérito. Isto aplica-se especialmente quando utiliza equações complexas de relevância, de personalização e de validação - tem de ter a certeza de que nada falhará quando executar o inquérito.
Esta funcionalidade permite validar rapidamente a correção do seu inquérito, grupo(s) e pergunta(s). Pode ser acedida a partir das opções do menu da barra de topo, localizadas nas definições relacionadas com o inquérito. Está disponível através do menu Ferramentas:
Como pode observar acima, pode executar esta opção quatro vezes, uma para cada idioma utilizado num inquérito.
Descrição
A opção Verificar a lógica do inquérito mostra tudo o que especificou para cada pergunta e grupo (por exemplo, nome, texto, ajuda, condições/relevância, regras de validação, valores por defeito, perguntas secundárias, respostas) num formato de tabela conveniente. Destaca os erros e permite clicar nos identificadores das perguntas e dos grupos (ou nas variáveis usadas nas equações) para abrir novos separadores do navegador e editar essas perguntas ou grupos. Isto facilita a edição rápida de quaisquer erros e a atualização da página de verificação da lógica para confirmar a correção do inquérito antes de o ativar.
A apresentação foi também concebida para ser legível por investigadores e patrocinadores do estudo, para que possam validar a correção da conceção e da lógica do inquérito. A verificação da lógica do inquérito atualiza a cache de todas as expressões usadas num inquérito ativo.
Inclui as seguintes colunas:
- # - mostra as contagens da sequência de grupos e perguntas, começando em 0.
- Nome [ID] - mostra o código da pergunta para o grupo/pergunta/pergunta secundária. Estes códigos podem ser usados como variáveis em expressões. O ID é o identificador da pergunta (QID) ou do grupo de perguntas (GID). Este campo mostra também o tipo de pergunta (por exemplo, Escolha múltipla [M])).
- Relevância [Validação] (Omissão) - mostra o seguinte:
- Relevância - a equação de relevância da pergunta ou do grupo, com sintaxe realçada. Se for sempre verdadeira (para ser mostrada em qualquer cenário), o valor será 1.
- Validação - o ExpressionScript gera automaticamente a equação de validação com base nos atributos da pergunta selecionados (por exemplo, número mín./máx. de respostas, valores de soma mín./máx./igual a, valores individuais mín./máx. ou validação por expressão regular). Esta secção mostra a equação de validação gerada para que possa detetar eventuais erros (como variáveis não definidas).
- A validação ao nível da pergunta mostra a equação necessária para verificar os atributos da pergunta descritos acima
- A validação ao nível da pergunta secundária mostra a equação necessária para implementar array_filter, array_filter_exclude e exclusive_option
- Omissão - se a pergunta tiver um valor por defeito, é mostrado aqui, com sintaxe realçada (uma vez que o valor por defeito pode ser uma expressão).
- Texto [Ajuda] (Sugestão) - mostra o seguinte:
- Texto - o texto do grupo, da pergunta, da pergunta secundária ou da resposta. Tem a sintaxe realçada para mostrar qualquer personalização incorporada, permitindo verificar que declarou todas as variáveis que pretende usar na personalização.
- Ajuda - mostra o texto de ajuda da pergunta, também com sintaxe realçada.
- Sugestão - mostra a dica de validação gerada internamente, com base nos atributos da pergunta. Esta mesma dica é usada em todos os estilos de inquérito, bem como na versão de impressão do inquérito e nos ecrãs de entrada de dados.
- Atributos da pergunta - mostra uma tabela com todos os atributos relevantes desta pergunta. Os atributos que podem ser equações têm a sintaxe realçada para que possa validar a sua correção.
As linhas têm as seguintes cores:
- Grupos - são mostrados com fundo cinzento claro
- Perguntas - são mostradas com fundo verde claro
- Perguntas secundárias - são mostradas com fundo amarelo pálido
- Opções de respostas - são mostradas com fundo branco simples
As respostas têm um atributo adicional na coluna Relevância:
- Valor - é o valor interno por defeito usado nos cálculos. Se estiver a utilizar avaliações, será o valor da avaliação. Caso contrário, será igual ao nome da resposta.
Utilização
No topo da página existe uma mensagem de resumo. Se estiver tudo bem, dirá "Não foram detados erros de sintaxe neste inquérito", ou "Este grupo" ou "Esta pergunta", "por si só, não contém erros de sintaxe". Se acontecer o contrário, dirá "X perguntas têm erros de sintaxe que precisam de ser corrigidos".
Cada pergunta que tenha erros de sintaxe tem o fundo da sua coluna mais à esquerda (isto é, #) assinalado a vermelho. Além disso, será apresentado um aviso com o número mínimo de erros de uma pergunta na coluna Nome [ID]. Os seguintes erros são comuns:
- Variável não definida - se não definiu todas as suas variáveis, ou se escreveu mal o array_filter (ou usou conjuntos diferentes de opções de resposta para o array_filter), algumas das suas perguntas de validação mostrarão erros. As variáveis não definidas são mostradas a texto vermelho, dentro de uma caixa com linha vermelha.
- Sintaxe incorreta - ao começar a usar equações de relevância, pode usar demasiados ou poucos parênteses. Esses problemas de sintaxe são realçados e inseridos numa caixa vermelha. Se passar o rato sobre qualquer texto numa caixa vermelha, uma dica de ferramenta descreverá o erro.
Cores na sintaxe do ExpressionScript
As condições e equações têm a sintaxe realçada para facilitar a perceção do que está a analisar:
- Verde / Azul claro: uma variável que faz referência a uma pergunta anterior no inquérito
- Azul: uma função
- Cinzento: uma expressão de cadeia de caracteres
- Castanho: uma expressão TOKEN (dados do participante)
- Preto: operador
O que deve verificar:
- Roxo: uma variável que faz referência a uma pergunta posterior no inquérito. Normalmente trata-se de um erro e deve ser verificada.
- Vermelho ou moldura vermelha: uma variável inexistente, uma referência a uma pergunta anterior ou um erro de sintaxe - normalmente deve ser verificado.
Variáveis não definidas
Se forem usadas variáveis não definidas, o respetivo nome da variável será assinalado a vermelho e rodeado por uma linha vermelha. Se passar o rato sobre o nome da variável, será apresentado "variável não definida":


}}
Sintaxe incorreta
A maioria dos erros relacionados com expressões deve-se a sintaxe incorreta. Isto acontece porque os administradores de inquéritos esquecem-se, normalmente, de adicionar uma chaveta, de utilizar corretamente os parênteses ou utilizam as expressões de forma errada:


Aqui encontra muitos bons exemplos sobre a utilização do destaque de sintaxe.
JavaScript personalizado incorreto
Os erros de JavaScript também serão destacados na verificação da lógica do inquérito:

Acelerar a edição e a validação
Todo o texto com destaque de sintaxe tem dicas de ferramenta incorporadas, nas quais se pode clicar:
- Dicas de ferramenta
- Funções - ao passar o rato por cima, pode ver a finalidade e a definição da sintaxe da função;
- Nomes de variáveis - ao passar o rato por cima, pode ver a posição (grupo, sequência da pergunta), o texto da pergunta e as respostas permitidas para a pergunta.
- Ações
- Nomes de variáveis - ao clicar no nome da variável, abre-se uma nova janela que lhe permite editar a pergunta. Isto facilita a navegação e a verificação da lógica - basta continuar a clicar nos nomes das variáveis da relevância ou dos critérios de validação da pergunta para ver de onde vêm e como são utilizadas.
Exemplos
Os exemplos seguintes foram retirados dos inquéritos de exemplo do ExpressionScript. Nessa página, pode encontrar capturas de ecrã de inquéritos em execução, explicações e transferências.
Índice de Massa Corporal
Aqui estão as capturas de ecrã deste exemplo.
Esta é a vista de reordenação das perguntas do cálculo do Índice de Massa Corporal. Pode ver as equações de relevância do peso, da altura e do IMC na coluna Pergunta:

Para uma melhor visão geral do inquérito, consulte a página de verificação da lógica do inquérito:

Este exemplo de inquérito é também um bom exemplo de instruções if() aninhadas para gerar o "weightstatus".

Lógica em cascata
Aqui estão as capturas de ecrã deste exemplo.
Mostra a lógica de validação das perguntas secundárias que é gerada automaticamente quando utiliza array_filter e array_filter_exclude. Este exemplo mostra também como pode substituir o valor personalizado de "Outro" (a resposta de Q02_other é Q01_other).

A Q05 neste exemplo mostra a utilização simultânea de array_filter e array_filter_exclude em Q01 e Q02, respetivamente. Este exemplo demonstra as capacidades de array_filter em cascata. Note que um dos principais motivos para mostrar os critérios de validação ao nível da pergunta e da pergunta secundária é ajudar a garantir que não cometeu erros de digitação ao especificar os nomes das variáveis de array_filter ou array_filter_exclude (ou caso utilize nomes de variáveis diferentes para a sua lista de perguntas secundárias filtradas). Se existirem esses erros, todos os nomes de variáveis inválidos aparecerão a vermelho, indicando que não estão definidos, o que lhe permite corrigir rapidamente o problema.

Relevância dinâmica
Este exemplo demonstra a lógica de relevância dinâmica em cascata para controlar a visibilidade das perguntas. Pode transferir este exemplo aqui.
Note também que as perguntas só são apresentadas se determinados critérios de validação forem cumpridos. Por exemplo, se uma pessoa indicar que tem 2 filhos, o participante tem de preencher determinadas perguntas (kid1 e kid2).

Relevância ao nível do grupo
Este exemplo mostra como a relevância ao nível do grupo aparece na verificação da lógica. Aqui estão capturas de ecrã do exemplo descrito abaixo.
Como pode ver, a equação de relevância ao nível do grupo (cohabs > 1 && p1_rel != "") aparece na linha cinzenta Person 2 do G-2.
Pode também reparar que todas as perguntas são obrigatórias. No entanto, se o grupo for irrelevante, todas as suas perguntas também o são. Consequentemente, essas perguntas só são realmente obrigatórias se o grupo for relevante.
Pode também notar que determinadas perguntas só são apresentadas se a resposta à pergunta anterior não estiver vazia. Pode ver abaixo que, se p2_sex não for preenchida, p2_name não será apresentada, mesmo sendo uma pergunta obrigatória. A pergunta obrigatória p2_age também não será apresentada se p2_name não for preenchida. Estas perguntas podem ser consideradas "condicionalmente obrigatórias".
Além disso, note que as mensagens de dica também são criadas automaticamente. Estão organizadas por intervalo de valores (mín./máx.), intervalo da soma de valores (mín./máx./igual), número de respostas (mín./máx.), etc. (depende do tipo de pergunta utilizado e dos atributos ativos). Por vezes, pretende validar um intervalo de respostas, mas não quer mostrar ao participante dicas de validação que possam parecer disparatadas. Nesses casos, pode utilizar a opção de pergunta hide_tip (como neste caso, para evitar informar o participante de que a idade tem de estar entre 0 e 115, a menos que tente introduzir um valor inválido - veja p2_age).

Vírgula como separador decimal
Embora o LimeSurvey suporte totalmente a utilização da vírgula como separador decimal durante a execução, tem de continuar a utilizar o ponto como separador decimal na fase de conceção (por exemplo, ao especificar valores mínimo/máximo nos atributos avançados da pergunta). O exemplo funcional pode ser encontrado aqui.
Lembre-se também de que a lógica de validação é criada automaticamente a partir dos atributos da pergunta ativados. As equações podem parecer complicadas, mas não precisa de se preocupar com elas.

