pure::variants – Conector para
Manual de gerenciamento de código-fonte
Tecnologia Paramétrica GmbH
Versão 6.0.7.685 para pure::variants 6.0
Direitos autorais © 2003-2024 Parametric Technology GmbH
2024
Introdução
O conector pure::variants para gerenciamento de código-fonte (Connector) permite que os desenvolvedores gerenciem a variabilidade do código-fonte usando pure::variants. O gerenciamento de código-fonte do pure::variants fornece uma oportunidade flexível para sincronizar estruturas de diretório e código-fonte files facilmente com modelos pure::variants. Dessa forma, o gerenciamento de variantes pode ser aplicado de forma prática até mesmo em projetos de software complexos. Além disso, as conexões entre os recursos pure::variants e o código-fonte podem ser gerenciadas mais facilmente com o construtor e são altamente acessíveis por meio do Gerenciamento de Código-Fonte.
1.1. Requisitos de Software
O conector pure::variants para gerenciamento de código-fonte é uma extensão para pure::variants e está disponível em todas as plataformas suportadas.
1.2. Instalação
Consulte a seção pure::variants Connectors no pure::variants Setup Guide para obter informações detalhadas sobre como instalar o conector (menu Help -> Help Contents e pure::variants Setup Guide -> pure::variants Connectors).
1.3. Sobre este manual
Espera-se que o leitor tenha conhecimento básico e experiências com pure::variants. Por favor, consulte seu material introdutório antes de ler este manual. O manual está disponível na ajuda online, bem como em formato PDF para impressão aqui.
Usando o Conector
2.1. Iniciando pure::variants
Dependendo do método de instalação usado, inicie o Eclipse habilitado para pure::variants ou, no Windows, selecione o item pure::variants no menu do programa.
Se a perspectiva Gerenciamento de Variantes ainda não estiver ativada, faça isso selecionando-a em Abrir Perspectiva->Outro… no menu Janela.
2.2. Importar uma árvore de diretórios para um modelo de família
Antes de importar uma árvore de diretórios para um Family Model, um projeto de variantes precisa ser criado. Também é sugestivo ter recursos definidos em um Feature Model já. Consulte a documentação pure::variants para obter ajuda sobre essas etapas.
A importação real é iniciada selecionando a ação Importar… no menu de contexto dos Projetos view ou com o menu Importar… no File menu. Selecione Variant Models ou Projects na categoria Variant Management e pressione Next. Na página seguinte, selecione Import a Family Model from source folders e pressione Next novamente.
Escolha o tipo de código-fonte para importar
O assistente de importação aparece (veja Figura 1, “Página do assistente de importação para selecionar o tipo de código-fonte que pode ser importado”). Selecione um tipo de projeto para importar e pressione Avançar. Cada tipo contém um conjunto predefinido de file tipos para importar para o modelo.
Figura 1. Página do assistente de importação para selecionar o tipo de código-fonte que pode ser importadoSelecione a fonte e o destino
Na próxima página do assistente (Figura 2, “Página do assistente de importação para selecionar a origem e o destino da importação”) o diretório de origem e o modelo de destino devem ser especificados.
Pressione o botão Browse… para selecionar o diretório onde o código-fonte está que deve ser importado. Por padrão, o workspace atual é selecionado porque este pode ser um ponto útil para começar a navegar.
Abaixo você pode especificar o padrão include e exclude. Esses padrões precisam ser expressões regulares Java. Cada caminho de entrada, relativo à pasta raiz de origem, é verificado com esses padrões. Se o padrão include corresponder, uma pasta é importada, se o padrão exclude não corresponder. Ou seja, o padrão include pré-seleciona as pastas a serem importadas, o padrão exclude restringe essa pré-seleção.
Após selecionar o diretório do código-fonte, um modelo de destino deve ser definido. Portanto, selecione um projeto variante ou uma pasta onde o modelo deve ser armazenado e insira um nome de modelo. file o nome é estendido automaticamente com a extensão .ccfm se não for fornecido neste diálogo. Por padrão, ele será definido como o mesmo nome do próprio nome do modelo. Esta é a configuração recomendada.
Após uma pasta de origem conveniente e o nome do modelo desejado serem especificados, o diálogo pode ser finalizado pressionando Finish. Se o botão Next for pressionado, uma página adicional será exibida, onde configurações adicionais podem ser feitas.
Figura 2. Página do assistente de importação para selecionar a origem e o destino da importaçãoAlterar preferências de importação
Na última página do assistente (Figura 3, “Página do assistente de importação para definir uma configuração individual”) há preferências que podem ser feitas para personalizar o comportamento de importação do projeto de software importado.
A página de diálogo mostra uma tabela onde o file são definidos tipos que serão considerados pelo processo de importação.
Cada linha consiste em quatro campos.
- O campo Descrição contém um breve texto descritivo para identificar o file tipo.
- O File O campo de padrão de nome é usado para selecionar files para serem importados quando eles correspondem ao valor dos campos. O campo usa a seguinte sintaxe:
- O caso de uso mais comum pode ser um file extensão. A sintaxe usual é .EXT, onde EXT é o desejado file extensão (por exemplo, .java).
- Outra situação comum é uma situação especial file, como uma marcafile. Portanto, é possível combinar exatamente file nome. Para isso, basta digitar o file nome no campo (por exemplo, build.xml).
- Em alguns casos, os desejos de mapeamento são mais específicos, portanto, apenas files que correspondem a um padrão especial devem ser importados. Para atender a esse requisito, é possível usar expressões regulares no File campo padrão de nome.
Descrever a sintaxe de expressões regulares excederia a intenção desta ajuda. Por favor, consulte a seção de expressões regulares do capítulo de referência no guia do usuário pure::variants (por exemplo, .*).
- O campo Tipo de elemento mapeado define o mapeamento entre um file tipo e um tipo de elemento de família pure::variants. O tipo de elemento de família é um descritor para a fonte file para fornecer mais informações ao elemento mapeado no modelo importado. As seleções típicas são ps:class ou ps:makefile.
- O Mapeado file campo tipo define o mapeamento entre um file tipo e um pure::variants file tipo. O file digite pure::variants é um descritor para a fonte file para fornecer mais informações ao elemento mapeado no modelo importado. As seleções típicas são impl para implementações ou def para definição files.
Figura 3. Página do assistente de importação para definir uma configuração individualNovo file tipos podem ser adicionados usando o botão Adicionar Mapeamento. Todos os campos são preenchidos com o valor indefinido e devem ser preenchidos pelo usuário. Para editar um valor em um campo, basta clicar no campo com o mouse. O valor se torna editável e pode ser alterado. Não é possível alterar o valor padrão file padrões de nomes da tabela. Para tornar uma personalização flexível, é possível desmarcar um file digite desmarcando a linha. Desmarcado file padrões de nomes permanecem na configuração, mas não serão usados pelo importador. Definido pelo usuário file os tipos podem ser removidos novamente usando o botão Remover Mapeamento.
Por padrão, um Outro files file o padrão de nome está disponível na tabela, mas desmarcado. Normalmente, não é desejado importar todos files, mas isso pode ser facilmente alterado selecionando a linha correspondente.
Há três opções gerais de importação para personalizar o comportamento do importador.
- Não importe diretórios sem correspondência files (por exemplo, diretórios CVS).
Se o importador encontrar um diretório onde não haja correspondência file está nele e onde nenhum subdiretório tem uma correspondência file, o diretório não será importado. Isso geralmente é útil se os projetos forem gerenciados por sistemas de gerenciamento de versão como o CVS. Para o CVS, cada diretório relevante contém um diretório CVS onde irrelevantes files são armazenados. Se esta opção for selecionada e o CVS-files não correspondem a nenhum file tipo definido acima, o diretório não será importado como um componente no Modelo de Família. - Organizar filese diretórios.
Habilite esta opção para classificar files e diretórios, cada um em ordem alfabética. - Manipulação do caminho de importação.
Para sincronização posterior, o importador precisa armazenar o caminho original de todos os elementos importados no modelo.
Em muitos casos, os Family Models são compartilhados com outros usuários. A estrutura do diretório pode ser diferente para cada usuário. Para dar suporte aos cenários de uso mais comuns, o importador pode trabalhar em modos diferentes:
Absoluto | O caminho absoluto para o elemento importado será armazenado no modelo. Para sincronização posterior e durante a transformação, o files devem ser colocados exatamente no mesmo local da primeira importação. |
Relativo ao espaço de trabalho | Os caminhos são armazenados em relação à pasta do espaço de trabalho. Para sincronização, o files tem que fazer parte do espaço de trabalho do Eclipse. A transformação tem que usar o espaço de trabalho do Eclipse como diretório de entrada. |
Relativo ao Projeto | Os caminhos são armazenados em relação ao projeto. Para sincronização, o files são parte do projeto dentro do Eclipse. A transformação tem que usar a pasta do projeto como diretório de entrada. |
Relativo ao Caminho | Os caminhos são armazenados em relação ao caminho fornecido. Para sincronização, o files devem ser colocados exatamente no mesmo local. O diretório de entrada da transformação é o mesmo que o caminho relativo durante a importação. |
Todas as preferências deste diálogo são armazenadas persistentemente. As personalizações pessoais não devem ser refeitas toda vez que a importação for executada. Isso torna o fluxo de trabalho de importação fácil e rápido.
2.3. Atualizando modelos da árvore de diretórios
Pressione o botão Sincronizar para sincronizar um modelo importado com seu caminho de diretório. O caminho raiz do projeto é armazenado no modelo, então ele será sincronizado com o mesmo diretório de antes. Para habilitar o botão Synchronize, abra o modelo e selecione qualquer elemento. Após pressionar o botão Synchronize, um Compare Editor é aberto, onde o atual Family Model e o modelo da estrutura de diretório atual são opostos (veja Figura 4, “Atualização do modelo da Directory Tree no Compare Editor”).
Figura 4. Atualização do modelo da Árvore de Diretórios no Editor de Comparação O editor compare é usado em pure::variants para comparar versões de modelos, mas neste caso é usado para comparar a estrutura de diretório físico (exibida no canto inferior direito) com o modelo pure::variants atual (lado inferior esquerdo). Todas as alterações são listadas como itens separados na parte superior do editor, ordenadas pelos elementos afetados.
Selecionar um item nesta lista destaca a respectiva mudança em ambos os modelos. No ex.ample, um elemento adicionado é marcado com uma caixa no lado direito e conectado com sua posição viável no modelo no lado esquerdo. A barra de ferramentas Merge entre as janelas do editor superior e inferior fornece ferramentas para copiar alterações únicas ou mesmo todas (não conflitantes) como um todo do modelo de árvore de diretórios para o Feature Model.
Observação
A sincronização é feita com as últimas configurações do importador usadas. Isso torna possível atualizar o modelo com outras configurações feitas enquanto a importação era feita.
Usando o Indexador de Relação
O Conector para Gerenciamento de Código-Fonte aprimora as Relações View com informações sobre conexões entre elementos do modelo pure::variants e código-fonte. Relações são adicionadas para recursos que são usados em condições dos elementos ps:condxml e ps:condtext.
Para ps:flag e ps:flagfile elementos a localização das constantes do pré-processador na fonte C/C++ files são mostrados. Além disso, os locais das constantes de pré-processador correspondentes são mostrados para um recurso selecionado usando o mapeamento entre nomes exclusivos de recurso e constantes de pré-processador.
3.1. Adicionando o Indexador de Relações a um Projeto
O indexador de relações pode ser ativado em uma página de propriedade de projeto especial. Selecione o projeto e escolha o item Propriedades no menu de contexto. Na caixa de diálogo que se abre, selecione a página Indexador de relações.
Figura 5. Página de propriedades do projeto para o indexador de relações
O indexador de relação é ativado para o projeto selecionando a opção Habilitar Indexador de Relação (1). Após habilitar o indexador, há mais algumas opções para definir o comportamento específico do projeto. A indexação de pure::variants Conditions e C/C++ Preprocessor Constants pode ser ativada separadamente (2). A lista com file padrões de nomes (3) é usado para selecionar o files para indexação. Somente files que correspondem a um dos padrões são escaneados. Adicione o “*” como padrão para escanear todos files de um projeto.
Após ativar o indexador para um projeto, um construtor é adicionado ao projeto. Este construtor verifica as alterações files para novas relações com elementos do modelo pure::variants automaticamente.
3.2. As relações com o código-fonte
Com o indexador de relações ativado, as Relações View contém entradas adicionais. Essas entradas mostram o nome do file e o número da linha do ponto variante. A dica de ferramenta mostra a seção apropriada do file. Ao clicar duas vezes na entrada, o file será aberto em um editor.
pure::variants Condições
A condição pure::variants pode ser usada para incluir ou excluir seções de um file dependendo de uma seleção de recurso. O Condition Indexer verifica essas regras e extrai os recursos referenciados. Se tal recurso for selecionado no editor, o Relations View mostrará tudo files e linhas onde uma condição com o recurso selecionado está localizada (veja Figura 6, “Representação de uma condição nas relações View”).
Figura 6. Representação de uma Condição nas Relações ViewPara obter uma explicação detalhada sobre como definir condições, consulte a seção ps:condtext do capítulo 9.5.7 do Guia do Usuário do pure::variants (Referência–>Tipos de Elementos de Origem Predefinidos–>ps:condtext).
Constantes do pré-processador C/C++
O indexador do pré-processador C/C++ verifica files para constantes usadas em regras de pré-processador (por exemplo, #ifdef, #ifndef, …).
Se um ps:flag ou ps:flagfile elemento é selecionado as Relações View mostra o uso da constante definida do pré-processador.
As Relações View também mostra constantes de pré-processador conectadas a recursos usando padrões de mapeamento. Para isso, os padrões são expandidos com os dados do recurso selecionado. Os símbolos resultantes são usados para procurar constantes de pré-processador correspondentes. Figura 7, “Representação de uma constante do pré-processador C/C++ nas relações View"mostra um example com o padrão fame{Nome}. O padrão é expandido com o nome exclusivo do recurso para fameNative. No código indexado, há 76 locais onde a constante do pré-processador fameNative é usada.
Esses locais são mostrados nas Relações View. Os padrões podem ser definidos nas preferências (veja Seção 3.3, “As Preferências”).
Figura 7. Representação de uma constante do pré-processador C/C++ nas relações View
3.3. As Preferências
Para alterar o comportamento padrão do indexador, abra as preferências do Eclipse e selecione a página Relation Indexer na categoria Variant Management. A página mostra duas listas.
Figura 8. Página de preferências do indexador de relaçõesA lista superior contém o padrão file padrões para o indexador (1). Esta lista é a configuração de padrão inicial para projetos recém-habilitados.
A lista inferior contém o mapeamento entre recursos e constantes do pré-processador (2). Esse mapeamento é usado para todos os projetos. A Tabela 1, “Substituições de Mapeamento Suportadas” mostra todas as substituições possíveis.
Tabela 1. Substituições de mapeamento suportadas
Curinga | Descrição | Example: RecursoA |
Nome | o nome exclusivo do recurso selecionado | FLAG_{Nome} – FLAG_FeatureA |
NOME | o nome exclusivo em maiúsculas do recurso selecionado | FLAG_{NAME} – FLAG_FEATUREA |
nome | o nome exclusivo em minúsculas do recurso selecionado | flag_{nome} – flag_featurea |
Documentos / Recursos
![]() |
pure-systems 2024 Conector para software de gerenciamento de código-fonte [pdf] Manual do Usuário 2024, 2024 Conector para Software de Gerenciamento de Código-Fonte, Conector para Software de Gerenciamento de Código-Fonte, Software de Gerenciamento de Código-Fonte, Software de Gerenciamento, Software |