Matriz do pacote de verificação de código proativo para a aplicação Impact Store

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 16 min. de leitura
  • Consulte a matriz do pacote de verificação de código proativo (PCC) para obter detalhes sobre as verificações realizadas durante uma verificação de PCC.

    Tabela 1. Matriz do pacote de verificação proativa de código
    Categoria Nome Short_description Descrição
    Desempenho HSD0001049 Evitar scripts de interface do usuário global Evitar scripts de interface do usuário global Os scripts de interface do usuário global são carregados em todas as páginas/formulários na ServiceNow, mesmo se o código dentro deles não for chamado.
    Gerenciabilidade HSD0001058 SCRIPT O app com escopo usa utilitários de registro em log ou métodos descontinuados O app com escopo usa utilitários de registro em log ou métodos descontinuados — gs.log As aplicações com escopo devem usar APIs de registro em log com escopo em vez de métodos legados.
    Gerenciabilidade HSD0001058 XML O app com escopo usa utilitários de registro em log ou métodos descontinuados O app com escopo usa utilitários de registro em log ou métodos descontinuados — gs.log As aplicações com escopo devem usar APIs de registro em log com escopo em vez de métodos legados.
    Desempenho HSD0001116 Scripts de cliente não devem ser definidos em relação à tabela Global Scripts de cliente não devem ser definidos em relação à tabela Global Um client script global é qualquer client script em que a tabela selecionada é Global. Client scripts globais não têm restrições de tabela; portanto, eles serão carregados em todas as páginas do sistema, introduzindo atraso de carregamento do navegador no processo. Carregar este tipo de scripts em todas as páginas não há nenhum benefício.
    Desempenho HSD0001126 SCRIPT Referência com pontos desnecessária para sys_id do objeto atual Referência com pontos desnecessária para sys_id do objeto atual Os campos de referência já armazenam o SYS ID do registro referenciado. Usar gr.fieldname.sys_id é uma referência com pontos e instrui a plataforma a executar outra consulta somente para retornar o mesmo valor. Esta é uma sobrecarga desnecessária.
    Desempenho HSD0001126 XML Referência com pontos desnecessária para sys_id do objeto atual Referência com pontos desnecessária para sys_id do objeto atual Os campos de referência já armazenam o SYS ID do registro referenciado. Usar gr.fieldname.sys_id é uma referência com pontos e instrui a plataforma a executar outra consulta somente para retornar o mesmo valor. Esta é uma sobrecarga desnecessária.
    Desempenho HSD0001128 SCRIPT O código no cliente não deve usar métodos AJAX síncronos O código no cliente não deve usar métodos AJAX síncronos Código que usa AJAX síncrono pode causar atrasos no processamento de eventos de IU. Isso pode ser prejudicial ao desempenho e afetar negativamente a experiência do usuário. Sempre que possível, devemos tentar empregar AJAX assíncrono.
    Melhora HSD0001142 SCRIPT O código no cliente não deve usar a técnica de manipulação DOM O código no cliente não deve usar a técnica de manipulação DOM Essa técnica de personalização oferece muito controle, mas frequentemente causa desafios de upgrade. Não é recomendável usar jQuery, PrototypeJS, GEL e outras técnicas.
    Gerenciabilidade HSD0001153 SCRIPT URL da instância codificada URL da instância codificada Gera uma descoberta de URLs de instância codificadas, já que seu uso pode ser prejudicial à funcionalidade em todos os ambientes.
    Gerenciabilidade HSD0001153 XML URL da instância codificada URL da instância codificada Gera uma descoberta de URLs de instância codificadas, já que seu uso pode ser prejudicial à funcionalidade em todos os ambientes.
    Gerenciabilidade HSD0001174 REST Serviços web com script gravando dados diretamente Serviços web com script gravando dados diretamente Os Serviços web com script inserem/atualizam/excluem dados diretamente, porém é recomendável utilizar Inclusões de script porque elas fornecem uma abordagem estruturada e documentada para gerenciar operações de dados, garantindo consistência, segurança e manutenção na plataforma.
    Gerenciabilidade HSD0001174 SOAP Serviços web com script gravando dados diretamente Serviços web com script gravando dados diretamente Os Serviços web com script inserem/atualizam/excluem dados diretamente, porém é recomendável utilizar Inclusões de script porque elas fornecem uma abordagem estruturada e documentada para gerenciar operações de dados, garantindo consistência, segurança e manutenção na plataforma.
    Segurança HSD0001235 XML Evitar expressões JEXL dinâmicas dentro do marcador Jelly Evitar expressões JEXL dinâmicas dentro do marcador Jelly Ao escrever código Jelly, evite usar expressões JEXL dinâmicas dentro da tag Jelly (ou <g2:evaluate> para a fase dois). Embora o código pareça funcionar, ele afeta um recurso de memória (chamado PermGen) na Java Virtual Machine, o que pode levar a problemas de desempenho e até mesmo indisponibilidades do sistema ao longo do tempo. A exceção ao uso de expressões JEXL dentro de marcadores <g:evaluate> é com valores estáticos, incluindo: (e suas contrapartes da fase dois: USD[amp], USD[AND] e assim por diante).
    Melhora HSD0001247 Uso de API RESTMessage descontinuada (v1) Uso de API RESTMessage descontinuada (v1)

    A API permitiu enviar mensagens REST de saída usando JavaScript.

    No entanto, a versão 1 do RESTMessage foi descontinuada.

    Gerenciabilidade HSD0001275 Os scripts não devem conter IDs codificados Os scripts não devem conter IDs codificados Sys_ids de codificação rígida torna o sistema mais difícil de gerenciar e menos capaz de mover a funcionalidade entre instâncias.
    Gerenciabilidade HSD0001278 As regras de negócio anteriores não devem usar update() nem insert() em outras tabelas As regras de negócio anteriores não devem usar registros update() nem insert() em outras tabelas Executar um insert() ou update() em um onBefore BR causará atualizações em outras tabelas, mesmo que a atualização possa ser cancelada.
    Gerenciabilidade HSD0001281 getMessage() chamado no Script de cliente sem pré-carregar chave de mensagem getMessage() chamado no Script de cliente sem pré-carregar chave de mensagem O getMessage usado em um client script precisa ter a chave de mensagem adicionada ao campo Mensagens no registro do script.
    Gerenciabilidade HSD0001312 SCRIPT Evitar o uso de console.log() no código O código não deve conter o método de depuração console.log() A função do lado do cliente console.log pode causar erros em determinadas versões do navegador. Além disso, há uma boa chance de que o que está sendo registrado sejam informações que você não deseja expor publicamente e que pessoas com intenção mal-intencionada manipulem o script para refletir PII. Nunca é uma boa ideia ir para a produção com o registro em log do console habilitado. Console.log é inválido do lado do servidor e, portanto, também não deve estar lá.
    Gerenciabilidade HSD0001312 XML Evitar o uso de console.log() no código O código não deve conter o método de depuração console.log() A função do lado do cliente console.log pode causar erros em determinadas versões do navegador. Além disso, há uma boa chance de que o que está sendo registrado sejam informações que você não deseja expor publicamente e que pessoas com intenção mal-intencionada manipulem o script para refletir PII. Nunca é uma boa ideia ir para a produção com o registro em log do console habilitado. Console.log é inválido do lado do servidor e, portanto, também não deve estar lá.
    Desempenho HSD0001338 Regras de negócio não devem ser definidas na tabela Global Regras de negócio não devem ser definidas na tabela Global (Regra de negócio global) Uma regra de negócio global é qualquer regra de negócio em que a tabela selecionada é Global. Qualquer outro script pode chamar Regras de negócios globais. As Regras de negócios globais não têm condições ou restrições de tabela e são carregadas em todas as páginas do sistema.
    Desempenho HSD0001347 SCRIPT O código no cliente não deve usar GlideRecord O código no cliente não deve usar GlideRecord O objeto GlideRecord do lado do cliente geralmente é ineficiente, porque retorna muitos dados desnecessários. GlideRecord e g_form.getReference estão envolvidos.
    Desempenho HSD0001358 SCRIPT O código no servidor não deve usar GlideRecord.getRowCount() O código no servidor não deve usar GlideRecord.getRowCount() para contar registros GlideRecord.getRow Count() funciona obtendo todo o conjunto de resultados sem usar as funções aritméticas integradas do banco de dados. GlideAggregate usa o banco de dados, portanto, muitas vezes é drasticamente mais rápido. A exceção a esta recomendação é se você pretende percorrer os registros e processá-los de qualquer maneira.
    Desempenho HSD0001358 XML O código no servidor não deve usar GlideRecord.getRowCount() O código no servidor não deve usar GlideRecord.getRowCount() para contar registros GlideRecord.getRow Count() funciona obtendo todo o conjunto de resultados sem usar as funções aritméticas integradas do banco de dados. GlideAggregate usa o banco de dados, portanto, muitas vezes é drasticamente mais rápido. A exceção a esta recomendação é se você pretende percorrer os registros e processá-los de qualquer maneira.
    Gerenciabilidade HSD0001392 Os scripts não devem usar o método eval() Os scripts não devem usar o método eval() A função eval() avalia ou executa um argumento. O uso inadequado de eval() abre seu código para ataques de injeção e a depuração pode ser mais desafiadora, já que nenhum número de linha é exibido com um erro.
    Desempenho HSD0001554a JDBC Fontes de dados com “Usar data/hora da última execução” desabilitada para conjuntos de atualizações As fontes de dados JDBC devem ter a opção “Usar data/hora da última execução” marcada A importação repetida de dados sem alterações causa muitas linhas ignoradas e limita desnecessariamente os recursos do sistema.
    Desempenho HSD0001560 Usar “rastrear por” em loops ngRepeat Usar “rastrear por” em loops ngRepeat Ao usar a diretiva ngRepeat sem uma cláusula "rastrear por", os elementos DOM são destruídos e recriados sempre que os dados de origem são atualizados. Adicionar uma cláusula "rastrear por" com uma chave exclusiva (como um sys_id) permite que os elementos DOM sejam reutilizados em vez de recriados, o que melhora significativamente o desempenho de páginas com listas grandes e complexas.
    Gerenciabilidade HSD0001578 As Regras de negócio não devem usar o método SOAP getResponse() As Regras de negócio não devem usar o método SOAP getResponse() GetResponse bloqueia a transação, aguardando até que uma resposta seja recebida. Isso é melhor feito de forma assíncrona.
    Desempenho HSD0001623 As ACLs de leitura (regras de segurança) não devem ter GlideRecord/GlideAggregate As ACLs de leitura (regras de segurança) não devem ter GlideRecord/GlideAggregate As ACLs de leitura são executadas com frequência. Ter pesquisas complexas de banco de dados pode prejudicar o desempenho.
    Segurança HSD0002016 Scripts de servidor em widgets devem usar GlideRecordSecure Scripts de servidor em widgets devem usar GlideRecordSecure em vez de GlideRecord

    A prática recomendada deve ser que os scripts de servidor em widgets usem GlideRecordSecure em vez de GlideRecord. Isso é para garantir que as ACLs de segurança sejam consideradas em todas as interações do servidor. Para detectar desvio, qualquer instanciação do GlideRecord deve ser marcada como descoberta.

    No momento, sp.getRecord() retorna um objeto GlideRecord. Na verdade, esta chamada deve retornar um objeto GlideRecordSecure para ser o mais seguro possível. Embora essa seja uma melhoria separada fora da ferramenta HealthScan, ela representa um desafio, pois será mais difícil para o HealthScan detectar o uso do objeto GlideRecord retornado por sp.getRecord.

    Desempenho HSD0002144 Utilizar c.server.get() para melhorar o desempenho do widget Utilizar c.server.get() para melhorar o desempenho do widget No client script, c.server.get() permite que você passe dados específicos para o script do servidor. Fazer isso pode ter melhorias de desempenho em relação ao c.server.update(), que envia todo o objeto de dados.
    Desempenho HSD0002150 Remova serviços não utilizados do client script do widget. Remova serviços não utilizados do client script do widget. Se os serviços injetados não forem usados no script do controlador do cliente de um widget, considere removê-los. Os serviços injetados e não usados serão instanciados, o que pode ter um impacto no desempenho. Também é uma prática recomendada, de uma perspectiva de legibilidade do código, injetar somente serviços necessários.
    Desempenho HSD0002154 Não use $rootScope.$on no client script de um widget. Não use $rootScope.$on no client script de um widget.

    RootScope. Em só deve ser usado em um serviço. Usar ouvintes de evento em rootScope no script do controlador do cliente de um widget pode causar vazamentos de memória se os ouvintes não forem destruídos manualmente. Cada vez que um widget é carregado, o controlador é inicializado, e cada ouvinte inicializado no rootScope não será destruído com o controlador, a menos que seja feito manualmente.

    Os serviços não têm outra alternativa a não ser disparar eventos no rootScope e escutar eventos no rootScope. Isso ocorre porque os serviços são inicializados uma vez no app e não têm seu próprio escopo. Não há problema em usar rootScope em um serviço.

    Gerenciabilidade HSD0002808 Scripts de cliente sem descrição Scripts de cliente sem descrição Scripts de cliente em que a descrição está vazia, é muito curta ou é igual ao nome do script.
    Gerenciabilidade HSD0002808 Inclusões de script sem descrição Inclusões de script sem descrição Inclusões de script em que a descrição está vazia, é muito curta ou é igual ao nome do script.
    Gerenciabilidade HSD0002827 Todos os eventos devem ter uma descrição Todos os eventos devem ter uma descrição Todos os eventos personalizados no registro de eventos devem ter o campo "descrição" preenchido. Isso garantirá que a finalidade do evento seja facilmente identificável pelos administradores que não criaram a entrada de registro e melhorará a manutenção da instância.
    Gerenciabilidade HSD0002828 Todos os eventos devem ter o campo “acionado por” preenchido Todos os eventos devem ter o campo “acionado por” preenchido Todos os eventos personalizados no registro de eventos devem ter o campo "fired_by" preenchido. Isso garantirá que o gatilho do evento seja facilmente identificável pelos administradores que não criaram a entrada de registro e melhorará a manutenção da instância.
    Gerenciabilidade HSD0003076 Credenciais de autenticação básica na definição de Mensagem de SOAP Credenciais de autenticação básica na definição de Mensagem de SOAP A autenticação básica para Mensagens de SOAP de saída deve usar perfis de autenticação básica em vez de colocar as credenciais na própria definição de função.
    Gerenciabilidade HSD0003081 Credenciais de autenticação básica na definição de Mensagem de REST Credenciais de autenticação básica na definição de Mensagem de REST A autenticação básica para Mensagens de REST de saída deve usar perfis de autenticação básica em vez de colocar as credenciais na própria definição de função.
    Melhora HSD0003307 A tabela Solicitação de mudança não deve ser estendida A tabela Solicitação de mudança não deve ser estendida

    Pelo menos uma solicitação de mudança de extensão de tabela secundária foi criada.

    A extensão da solicitação de mudança com tabelas secundárias personalizadas não deve ser feita:
    • Para oferecer suporte a uma tabela de solicitação de mudança personalizada, é necessária uma grande quantidade de personalização para os outros processos do ITSM
    • As novas funcionalidades em versões futuras podem não funcionar em tabelas estendidas ou exigir personalização adicional
    Gerenciabilidade HSD0003625 O script de Regra de negócio deve ser encapsulado na função executeRule O código do script em Regras de negócio deve ser encapsulado na função executeRule O código deve verificar se há regras de negócio com código não encapsulado na função executeRule.
    Melhora HSD0004147 Uso de GlideDialogWindow e GlideOverlay Uso de GlideDialogWindow e GlideOverlay Verifica o uso de GlideDialogWindow e GlideOverlay, que não podem ser testados pelo ATF.
    Desempenho HSD0004365 SCRIPT Cache liberado como parte de scripts Cache liberado como parte de scripts Se uma limpeza de cache for acionada como parte de uma execução de script não ootb, isso exigirá que a plataforma reconstrua o cache antes de retornar ao estado BAU. Esta atividade tem um impacto significativo no desempenho.
    Desempenho HSD0004726 SCRIPT O depurador não deve ser usado em scripts O depurador não deve ser usado em scripts A instrução do depurador é usada para informar o ambiente JavaScript em execução para interromper a execução e iniciar um depurador no ponto atual do código. Isso caiu em desuso como uma boa prática com o advento das ferramentas modernas de depuração e desenvolvimento. O código de produção definitivamente não deve conter o depurador, pois isso fará com que o navegador pare de executar o código e abra um depurador apropriado.
    Desempenho HSD0006666 Verificar se current.update() é usado em uma regra de negócio Verificar se current.update() é usado em uma regra de negócio Se usado em regras de negócio, current.update() causa atualizações recursivas e pode ter impacto significativo no desempenho.
    Gerenciabilidade HSD0013213 SCRIPT Detectar cadeias de caracteres codificadas no uso de addInfoMessage() Detectar cadeias de caracteres codificadas no uso de addInfoMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addInfoMessage() no lado do cliente e do servidor.
    Gerenciabilidade HSD0013213 XML Detectar cadeias de caracteres codificadas no uso de addInfoMessage() Detectar cadeias de caracteres codificadas no uso de addInfoMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addInfoMessage() no lado do cliente e do servidor.
    Gerenciabilidade HSD0013215 SCRIPT Detectar cadeias de caracteres codificadas no uso de alert() Detectar cadeias de caracteres codificadas no uso de alert() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências no alert() no lado do cliente.
    Gerenciabilidade HSD0013215 XML Detectar cadeias de caracteres codificadas no uso de alert() Detectar cadeias de caracteres codificadas no uso de alert() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências no alert() no lado do cliente.
    Gerenciabilidade HSD0014228 SCRIPT Detectar cadeias de caracteres codificadas no uso de addErrorMessage() Detectar cadeias de caracteres codificadas no uso de addErrorMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addErrorMessage() no lado do cliente e do servidor.
    Gerenciabilidade HSD0014228 XML Detectar cadeias de caracteres codificadas no uso de addErrorMessage() Detectar cadeias de caracteres codificadas no uso de addErrorMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addErrorMessage() no lado do cliente e do servidor.
    Gerenciabilidade HSD0014229 SCRIPT Detectar cadeias de caracteres codificadas no uso de setError() Detectar cadeias de caracteres codificadas no uso de setError() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar tais ocorrências em setError() no lado do servidor.
    Gerenciabilidade HSD0014229 XML Detectar cadeias de caracteres codificadas no uso de setError() Detectar cadeias de caracteres codificadas no uso de setError() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar tais ocorrências em setError() no lado do servidor.
    Gerenciabilidade HSD0014231 SCRIPT Detectar cadeias de caracteres codificadas no uso de confirm() Detectar cadeias de caracteres codificadas no uso de confirm() — SCRIPT Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar tais ocorrências em confirm() no lado do cliente.
    Gerenciabilidade HSD0014231 XML Detectar cadeias de caracteres codificadas no uso de confirm() Detectar cadeias de caracteres codificadas no uso de confirm() — XML Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar tais ocorrências em confirm() no lado do cliente.
    Gerenciabilidade HSD0014232 SCRIPT Detectar cadeias de caracteres codificadas no uso de prompt() Detectar cadeias de caracteres codificadas no uso de prompt() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências no prompt() no lado do cliente.
    Gerenciabilidade HSD0014232 XML Detectar cadeias de caracteres codificadas no uso de prompt() Detectar cadeias de caracteres codificadas no uso de prompt() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências no prompt() no lado do cliente.
    Gerenciabilidade HSD0014233 SCRIPT Detectar cadeias de caracteres codificadas no uso de addMessage() Detectar cadeias de caracteres codificadas no uso de addMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando tais ocorrências em addMessage() no lado do servidor.
    Gerenciabilidade HSD0014233 XML Detectar cadeias de caracteres codificadas no uso de addMessage() Detectar cadeias de caracteres codificadas no uso de addMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando tais ocorrências em addMessage() no lado do servidor.
    Gerenciabilidade HSD0014234 SCRIPT Detectar cadeias de caracteres codificadas no uso de addFormMessage() Detectar cadeias de caracteres codificadas no uso de addFormMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addFormMessage() no lado do cliente.
    Gerenciabilidade HSD0014234 XML Detectar cadeias de caracteres codificadas no uso de addFormMessage() Detectar cadeias de caracteres codificadas no uso de addFormMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectando essas ocorrências em addFormMessage() no lado do cliente.
    Gerenciabilidade HSD0014544 SCRIPT Detectar cadeias de caracteres codificadas no uso de addWarningMessage() Detectar cadeias de caracteres codificadas no uso de addWarningMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências em addWarningMessage() no lado do cliente e do servidor.
    Gerenciabilidade HSD0014544 XML Detectar cadeias de caracteres codificadas no uso de addWarningMessage() Detectar cadeias de caracteres codificadas no uso de addWarningMessage() Mensagens/cadeias de caracteres codificadas no código não serão localizadas. Detectar essas ocorrências em addWarningMessage() no lado do cliente e do servidor.