Ferramenta de front-end simples que pode executar várias ferramentas de análise estática lendo as informações necessárias do compile_Commands.json.
Fornece a formatação de saída para integração a outras ferramentas, paralelo quando necessário, capacidade de substituir/reconfigurar sinalizadores do compilador e tal requisitos de plug -in de "ferramenta".
O desenvolvimento atual é feito principalmente no Windows, mas deve funcionar em qualquer plataforma em que você tenha Python, ambiente de desenvolvimento de trabalho para seu próprio projeto e analisador. Atualmente suportado:
O projeto está disponível no Pypi como distribuição de origem:
pip install processcdb
Como o ProcessCDB também instalará poucas dependências, o uso do PIPX para instalação é recomendado.
Depois que o pacote estiver instalado. Gere um arquivo de configuração com:
processcdb --dump-config
Isso gerará o arquivo de configuração do BareBones para o local padrão (pode ser substituído posteriormente com o argumento -Config). Edite este arquivo para apontar as opções "binárias" para que aqueles analisadores apontem para o executável. No Windows, não omite a extensão do arquivo.
Ajuda básica:
processcdb --help
Após um processo de geração de um compile_commands.json, você pode executar o ProcessCDB com ferramenta selecionada como esta:
processcdb --tool clang-tidy
Isso tentará localizar o arquivo JSON do diretório de trabalho atual e executará a ferramenta, neste caso Clang-Tidy, contra todos os arquivos que são compilados e não na lista negra no arquivo ProcessCDB COMFIG ou no arquivo de configuração do ProcessCDB ou em ferramentas e gera a saída para saída padrão. Se você precisar executar a ferramenta quando não tiver acesso para alterar o diretório de trabalho atual, poderá passar --cdb e Localização absoluta:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
Pode -se direcionar a saída das ferramentas para um arquivo com argumento --output . Vale a pena notar que certas ferramentas ( -t ) podem fornecer argumentos adicionais para fins específicos de processamento ou ferramenta:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Se o ProcessCDB for chamado sem passar --config , um arquivo de configuração padrão será usado. A localização depende do sistema operacional. Se você precisar analisar vários projetos com diferentes tipos de configurações ou deseja analisar com diferentes versões de um scanner específico, use vários arquivos de configuração.
Por exemplo, se você tiver uma base de código, você deseja digitalizar com o Clang 11.0.0, mas seu projeto é realmente compilado com o MSVC da Microsoft e você terá outro projeto que compila com CLANG: Faça um arquivo de configuração separado para MSVC e Clang e Invocar ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Se o ProcessCDB for chamado sem passar --config , um arquivo de configuração padrão será usado. Para gerar um arquivo de configuração, passe --dump-config para o ProcessCDB. Para salvar o arquivo de configuração padrão em um arquivo. Capture a saída padrão ou forneça o parâmetro --config .
Cada ferramenta possui uma seção separada e cada seção pode ser configurada na seção específica da ferramenta ou em padrão. Mínimo. O Single Tool Configuratio seria algo assim:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Aqui, temos a seção para ferramenta de tidy clang, onde estamos definindo um binary variável para um valor de c:llvm-11.0.0binclang-tidy.exe .
O módulo configparser Python é usado para carregar/analisar o arquivo.
As variáveis a seguir são compartilhadas entre as ferramentas:
binary - caminho absoluto para um scanner.file_blacklist - Lista de especificações de arquivo que devem ser omitidas na verificaçãoarg_blacklist - Lista de argumentos da linha de comando passados para o compilador que não devem ser passados para uma ferramenta.arg_additions - uma lista de pares de chave/valor. Se a chave for encontrada no JSON, um valor será colocado nos argumentos da ferramenta.jobs - Processos de número padrão ProcessCDB ou a ferramenta pode usar para processar. 0 para detecção automática.default_includes - Lista de caminhos que devem ser passados automaticamente para a ferramenta, pois incluem caminhos que podem não ser especificados no compile_commands.jsondefault_args - Lista de argumentos que devem ser passados para a ferramenta que não é fornecida pelo Compile_Commands.jsonincludes_as_system : Lista de especificações de arquivo que devem ser convertidas do normal -i incluir para -isstem.Cada opção de configuração que é uma lista e permite vários valores, use o semicolon como separador de itens.
Com arg_blacklist , pode -se retirar argumentos desnecessários da linha de comando e arg_addition pode ser usado para injetar novos argumentos. Por exemplo, se estiver compilando um projeto no MSVC e as exceções estiverem ativadas, a configuração após a ferramenta Clang-Tidy ainda funcionará corretamente:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Como primeiro, o ProcessCDB notaria que o Compile_Commands.json poderia ter /EHsc argumentar, adicionaria 2 novos argumentos -Xclang e '-fcxx-aceitações' e depois arg_blacklist removeria o original /EHsc
A ferramenta CPPCHECK também possui opção supression_file que, se necessário, deve ser uma localização absoluta do arquivo de supressão próprio do CPPCHECKS.
A capacidade do CLANG-TIDY TOOOL de converter o arquivo de log em XML para o suporte direto da Jenkins faz parte do Codechecker Project e seu licenciado no Apache 2.0
Home: https://github.com/rasjani/processcdb questões: https://github.com/rasjani/processcdb/issues