Configurar e personalizar as tarefas de compilação
Nota
A partir de 31 de dezembro de 2022, a extensão Microsoft Security Code Analysis (MSCA) foi descontinuada. O MSCA é substituído pela extensão microsoft Security DevOps do Azure DevOps. Siga as instruções em Configurar para instalar e configurar a extensão.
Este artigo descreve detalhadamente as opções de configuração disponíveis em cada uma das tarefas de compilação. O artigo começa com as tarefas das ferramentas de análise de código de segurança. Termina com as tarefas de pós-processamento.
Tarefa de Detetor Antimalware
Nota
A tarefa de compilação do Scanner Antimalware requer um agente de compilação com Windows Defender ativado. O Visual Studio 2017 alojado e posterior fornecem esse agente. A tarefa de compilação não será executada no agente alojado do Visual Studio 2015.
Embora as assinaturas não possam ser atualizadas nestes agentes, as assinaturas devem ter sempre menos de três horas.
Os detalhes da configuração da tarefa são apresentados na seguinte captura de ecrã e texto.
Na caixa de listagem Tipo da captura de ecrã, está selecionado Básico . Selecione Personalizado para fornecer argumentos da linha de comandos que personalizam a análise.
Windows Defender utiliza o cliente Windows Update para transferir e instalar assinaturas. Se a atualização da assinatura falhar no agente de compilação, é provável que o código de erro HRESULT venha de Windows Update.
Para obter mais informações sobre Windows Update erros e a mitigação, veja Windows Update códigos de erro por componente e o artigo do TechNet Windows Update Agent – Códigos de Erro.
Para obter informações sobre a configuração do YAML para esta tarefa, consulte as nossas opções yaml antimalware
Tarefa binSkim
Nota
Antes de poder executar a tarefa BinSkim, a sua compilação tem de cumprir uma destas condições:
- A compilação produz artefactos binários a partir de código gerido.
- Tem artefactos binários consolidados que pretende analisar com BinSkim.
Os detalhes da configuração da tarefa são apresentados na seguinte captura de ecrã e lista.
- Defina a configuração da compilação como Depurar para que os ficheiros de depuração .pdb sejam produzidos. BinSkim utiliza estes ficheiros para mapear problemas nos binários de saída de volta ao código fonte.
- Para evitar pesquisar e criar a sua própria linha de comandos:
- Na lista Tipo , selecione Básico.
- Na lista Função , selecione Analisar.
- Em Destino, introduza um ou mais especificadores para um padrão de ficheiro, diretório ou filtro. Estes especificadores resolvem um ou mais binários a serem analisados:
- Vários destinos especificados têm de ser separados por um ponto e vírgula (;).
- Um especificador pode ser um único ficheiro ou conter carateres universais.
- As especificações de diretório têm sempre de terminar com \*.
- Exemplos:
*.dll;*.exe
$(BUILD_STAGINGDIRECTORY)\*
$(BUILD_STAGINGDIRECTORY)\*.dll;$(BUILD_STAGINGDIRECTORY)\*.exe;
- Se selecionar Linha de Comandos na lista Tipo , terá de executar binskim.exe:
- Certifique-se de que os primeiros argumentos a binskim.exe são a análise de verbos seguida de uma ou mais especificações de caminho. Cada caminho pode ser um caminho completo ou um caminho relativo ao diretório de origem.
- Vários caminhos de destino têm de ser separados por um espaço.
- Pode omitir a opção /o ou /output . O valor de saída é adicionado por si ou substituído.
- As configurações padrão da linha de comandos são apresentadas da seguinte forma.
analyze $(Build.StagingDirectory)\* --recurse --verbose
analyze *.dll *.exe --recurse --verbose
Nota
O \* à direita é importante se especificar diretórios para o destino.
Para obter mais informações sobre os argumentos da linha de comandos BinSkim, regras por ID ou códigos de saída, veja o Guia do Utilizador do BinSkim.
Para obter informações sobre a configuração do YAML para esta tarefa, veja as nossas opções do YAML binSkim
Tarefa de Scanner de Credenciais
Os detalhes da configuração da tarefa são apresentados na seguinte captura de ecrã e lista.
As opções disponíveis incluem:
- Nome a Apresentar: nome da Tarefa de DevOps do Azure. O valor predefinido é Executar Scanner de Credenciais
- Versão Principal da Ferramenta: os valores disponíveis incluem CredScan V2, CredScan V1. Recomendamos que os clientes utilizem a versão CredScan V2 .
- Formato de Saída: os valores disponíveis incluem TSV, CSV, SARIF e PREfast.
- Versão da Ferramenta: recomendamos que selecione Mais Recente.
- Pasta de Análise: a pasta do repositório a analisar.
- Tipo de Ficheiro dos Searchers: as opções para localizar o ficheiro de pesquisa utilizado para análise.
- Ficheiro de Supressões: um ficheiro JSON pode suprimir problemas no registo de saída. Para obter mais informações sobre cenários de supressão, veja a secção FAQ deste artigo.
- Saída Verbosa: Auto-explicativa.
- Tamanho do Lote: o número de threads simultâneos utilizados para executar o Scanner de Credenciais. O valor predefinido é 20. Os valores possíveis variam entre 1 e 2.147.483.647.
- Tempo Limite da Correspondência: a quantidade de tempo em segundos para passar a tentar uma correspondência do searcher antes de abandonar a verificação.
- Tamanho da Memória Intermédia de Leitura da Análise de Ficheiros: o tamanho em bytes da memória intermédia utilizada enquanto o conteúdo é lido. O valor predefinido é 524.288.
- Máximo de Bytes de Leitura da Análise de Ficheiros: o número máximo de bytes a ler a partir de um ficheiro durante a análise de conteúdo. O valor predefinido é 104857600.
- Opções> de Controlo Executar esta tarefa: especifica quando a tarefa será executada. Selecione Condições personalizadas para especificar condições mais complexas.
- Versão: a versão da tarefa de compilação no Azure DevOps. Esta opção não é utilizada com frequência.
Para obter informações sobre a configuração do YAML para esta tarefa, veja as nossas opções yaML do Analisador de Credenciais
Tarefa de Analisadores Roslyn
Nota
Antes de poder executar a tarefa Roslyn Analyzers, a sua compilação tem de cumprir estas condições:
- A definição de compilação inclui a tarefa de compilação MSBuild ou VSBuild incorporada para compilar código C# ou Visual Basic. A tarefa analisadores baseia-se na entrada e saída da tarefa incorporada para executar a compilação MSBuild com analisadores Roslyn ativados.
- O agente de compilação que executa esta tarefa de compilação tem o Visual Studio 2017 versão 15.5 ou posterior instalado, para que utilize a versão 2.6 ou posterior do compilador.
Os detalhes da configuração da tarefa são apresentados na lista e nota seguintes.
As opções disponíveis incluem:
- Conjunto de regras: os valores são SDL Necessário, SDL Recomendado ou o seu próprio conjunto de regras personalizado.
- Versão dos Analisadores: recomendamos que selecione Mais Recente.
- Ficheiro de Supressões de Avisos do Compilador: um ficheiro de texto com uma lista de IDs de avisos que são suprimidos.
- Opções> de Controlo Executar esta tarefa: especifica quando a tarefa será executada. Selecione Condições personalizadas para especificar condições mais complexas.
Nota
Os Analisadores Roslyn estão integrados no compilador e só podem ser executados como parte da compilação csc.exe. Por conseguinte, esta tarefa requer que o comando do compilador que foi executado anteriormente na compilação seja reproduzido ou executado novamente. Esta repetição ou execução é feita ao consultar o Azure DevOps (anteriormente Visual Studio Team Services) para os registos de tarefas de compilação do MSBuild.
Não existe outra forma de a tarefa obter de forma fiável a linha de comandos de compilação MSBuild a partir da definição de compilação. Considerámos adicionar uma caixa de texto de forma livre para permitir que os utilizadores introduzam as respetivas linhas de comandos. No entanto, seria difícil manter essas linhas de comandos atualizadas e sincronizadas com a compilação principal.
As compilações personalizadas requerem a repetição de todo o conjunto de comandos e não apenas comandos do compilador. Nestes casos, ativar o Roslyn Analyzers não é trivial nem fiável.
Os Analisadores Roslyn estão integrados no compilador. Para ser invocado, os Analisadores Roslyn necessitam de compilação.
Esta nova tarefa de compilação é implementada através da recompilação de projetos C# que já foram criados. A nova tarefa utiliza apenas as tarefas de compilação MSBuild e VSBuild na mesma definição de compilação ou compilação que a tarefa original. No entanto, neste caso, a nova tarefa utiliza-as com Os Analisadores Roslyn ativados.
Se a nova tarefa for executada no mesmo agente que a tarefa original, a saída da nova tarefa substitui a saída da tarefa original na pasta de origens. Embora o resultado da compilação seja o mesmo, recomendamos que execute o MSBuild, copie a saída para o diretório de teste de artefactos e, em seguida, execute Os Analisadores Roslyn.
Para obter recursos adicionais para a tarefa Roslyn Analyzers, reveja os analisadores baseados em Roslyn.
Pode encontrar o pacote de analisador instalado e utilizado por esta tarefa de compilação na página NuGet Microsoft.CodeAnalysis.FxCopAnalyzers.
Para obter informações sobre a configuração do YAML para esta tarefa, consulte as nossas opções YAML de Analisadores Roslyn
Tarefa TSLint
Para obter mais informações sobre o TSLint, aceda ao repositório TSLint GitHub.
Nota
Como deve saber, a home page do repositório TSLint GitHub diz que o TSLint será preterido algures em 2019. A Microsoft está a investigar o ESLint como uma tarefa alternativa.
Para obter informações sobre a configuração do YAML para esta tarefa, verifique as nossas opções de YAML do TSLint
Tarefa Publicar Registos de Análise de Segurança
Os detalhes da configuração da tarefa são apresentados na seguinte captura de ecrã e lista.
- Nome do Artefacto: qualquer identificador de cadeia.
- Tipo de Artefacto: consoante a sua seleção, pode publicar registos no seu Azure DevOps Server ou num ficheiro partilhado que esteja acessível ao agente de compilação.
- Ferramentas: pode optar por preservar os registos de ferramentas específicas ou pode selecionar Todas as Ferramentas para preservar todos os registos.
Para obter informações sobre a configuração do YAML para esta tarefa, verifique as nossas opções YAML de Publicar Registos de Segurança
Tarefa de Relatório de Segurança
Os detalhes da configuração do Relatório de Segurança são apresentados na seguinte captura de ecrã e lista.
- Relatórios: selecione qualquer um dos formatos Consola de Pipeline, Ficheiro TSV e Ficheiro Html . É criado um ficheiro de relatório para cada formato selecionado.
- Ferramentas: selecione as ferramentas na definição de compilação para as quais pretende obter um resumo dos problemas detetados. Para cada ferramenta selecionada, poderá existir uma opção para selecionar se vê apenas erros ou se vê erros e avisos no relatório de resumo.
- Opções Avançadas: se não existirem registos para uma das ferramentas selecionadas, pode optar por registar um aviso ou um erro. Se registar um erro, a tarefa falhará.
- Pasta De Registos Base: pode personalizar a pasta de registos base onde os registos estão a ser encontrados. Mas esta opção normalmente não é utilizada.
Para obter informações sobre a configuração do YAML para esta tarefa, verifique as opções yaml do relatório de segurança
Tarefa pós-análise
Os detalhes da configuração da tarefa são apresentados na seguinte captura de ecrã e lista.
- Ferramentas: selecione as ferramentas na definição de compilação para as quais pretende injetar condicionalmente uma quebra de compilação. Para cada ferramenta selecionada, poderá existir uma opção para selecionar se pretende interromper apenas erros ou em erros e avisos.
- Relatório: opcionalmente, pode escrever os resultados que estão a causar a quebra de compilação. Os resultados são escritos na janela da consola do Azure DevOps e no ficheiro de registo.
- Opções Avançadas: se não existirem registos para uma das ferramentas selecionadas, pode optar por registar um aviso ou um erro. Se registar um erro, a tarefa falhará.
Para obter informações sobre a configuração do YAML para esta tarefa, verifique as nossas opções do YAML de Análise Pós-falha
Passos seguintes
Para obter informações sobre a configuração baseada em YAML, veja o nosso Guia de Configuração do YAML.
Se tiver mais perguntas sobre a extensão Análise de Código de Segurança e as ferramentas oferecidas, consulte a nossa página de FAQ.