Git Product home page Git Product logo

protheusdoc-vscode's Introduction

Version Installs Downloads Rating GitHub last commit Visual Studio Marketplace Last Updated GitHub Workflow Status GitHub top language GitHub Repo stars

ProtheusDoc for VsCode (AdvPL)

Suporte aos recursos e snippets de documentação TOTVS ProtheusDoc para VsCode.

ProtheusDoc for VsCode

Theme: Atom One Dark

Estou muito feliz pelo seu Download e espero que goste!


Descrição

Esta extensão irá detectar a sintaxe de uma função, método ou classe e gerar uma documentação dinâmica no formato ProtheusDoc.

Conheça mais sobre o ProtheusDoc neste post: https://gabrielalencar.dev/2020/01/29/ProtheusDoc-for-VsCode/

Confira este post especial em comemoração a marca de 3k users: #48

Caso encontre algum problema, tenha alguma dúvida ou sugestão de melhoria, fique a vontade para abrir uma Issue ou enviar um Pull Request com sua implementação.

Acesse a Wiki para conhecer os recursos, comandos e atalhos da extensão. Lá você encontrará dicas e instruções para configurá-la no seu ambiente, e desfrutar dos recursos da melhor forma.

Features previstas:

  • Implementar geração do cabeçalho lendo a declaração da Função;
  • Implementar configuração para o nome do Autor Default (caso omitido apresenta o do SO);
  • Implementar configuração para ocultar marcadores não obrigatórios;
  • Implementar Snippets dos marcadores mais comuns do ProtheusDoc;
  • Implementar geração do cabeçalho lendo a declaração do Método;
  • Implementar geração do cabeçalho lendo a declaração da Classe;
  • Implementar Text Decoration para os atributos do ProtheusDoc ficarem negritos;
  • Implementar Hover de Documentação nas chamadas dos identificadores para mostrar o ProtheusDOC;
  • Implementar geração de HTML das documentações (Será necessário apoio da comunidade);
  • Implementar Diagnóstico da sintaxe e de valores preenchidos dos principais atributos ProtheusDoc;
  • Adicionar no IntelliSense todas as palavras/words do editor aberto;
  • Implementar função para criar comentários no cabeçalho de todas as funções do fonte;
  • Outras solicitações de melhorias pendentes: Veja aqui GitHub issues by-label

Comandos & Atalhos da Extensão

A extensão disponibiliza vários comandos, itens de contexto e alguns atalhos para utilização dos recursos implementados.


Hover de documentações

Ao passar o mouse sobre uma função, método ou classe, um hover apresentará os dados das documentações ProtheusDoc presentes na tabela de documentações:

Hover de Documentação ProtheusDoc

Theme: Atom One Dark


Documentação HTML

Com essa extensão é possível exportar as documentações ProtheusDoc para HTML.


Tabela de documentações

A tabela de documentações armazena uma lista de documentações ProtheusDoc detectadas na Workspace ou nos arquivos abertos.


Configurações da extensão e valores default

A extensão disponibiliza uma série de configurações especiais, inclusive permite alterar os valores default de alguns atributos do ProtheusDoc.


Diagnóstico das documentações ProtheusDoc

As documentações ProtheusDoc devem seguir uma convenção padrão da TOTVS, por isso é disponibilizado um "validador" para diagnisticar as documentações.


Aproveite, me ajuda e com certeza irá te ajudar também! ❤️


Esta extensão foi criada e é mantida pela comunidade. Não tem nenhum vínculo direto ou indireto com a TOTVS®, qualquer uma de suas franquias ou qualquer um de seus representantes. ProtheusDoc é uma convenção criada e mantida pela TOTVS®. Esta extensão tem como objetivo apenas prover recursos que facilitem o uso desta convenção.

protheusdoc-vscode's People

Contributors

alencargabriel avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

protheusdoc-vscode's Issues

onDidChangeActiveTextEditor causes high CPU

Identificado que ao abrir arquivos grandes, a extensão está processando todas as funções do evento onDidChangeActiveTextEditor porém mesmo que não seja em um arquivo AdvPL suportado (exemplo arquivo pós gerado fontes do RPO).

exthost-d93e8e.txt (renomear para .cpuprofile)

Será necessário tratar nas funções/métodos para que estes não executem caso não seja um arquivo AdvPL válido.

Diagnóstico inválido quando descrição contém "*"

Identificado um problema no diagnóstico das documentações, pois quando há caracteres de * na descrição, o validador não interpreta o bloco de documentação todo.

Ex.:

/*/{Protheus.doc} TVPE002
Função para abrir arquivos *.SQL.
@type class
@author Gabriel Alencar
@since 13/12/2020
/*/

Restrição por atributo

Boa tarde.

Há alguma possibilidade de restrição de geração da documento, por algum atributo ?
Exemplo: Não gerar ProtheusDoc para 'types' do tipo 'method'.

Att.

Ignorar pastas na geração do HTML

Olá, primeiramente parabéns pela extensão. Tem sido muito útil para documentação dos meus projetos demonstrando um algo nível de profissionalidade ao apresentar o HTML com a documentação dos programas.

Utilizo muito a opção de gerar a documentação por pastas, assim consigo englobar todo o projeto. Tentei encontrar nas configurações ou nas issues como ignorar uma pasta especifica semelhante ao .gitignore, porém não consegui identificar. Existe essa funcionalidade implementada?

Caso não exista, seria possível a implementação? Não conheço muito TypeScript mas se for o caso posso tentar submeter uma alteração para análise, cheguei a imaginar uma possível validação do repositório no arquivo extension.ts dentro de addGenerateHTMLFolder.

Para melhorar o entendimento, estou anexando uma imagem de um repositório de um cliente meu, onde tenho dentro do diretório /temp/ os arquivos de consulta ou testes que não são interessantes manter no repositório.

Grato pela extensão.

exemplo-diretorio-exclude

Parâmetro Opcional no ProtheusDoc

Seria possível que essa engine do ProtheusDoc considerasse os parâmetros entre colchetes como parâmetros opcionais?

(https://tdn.totvs.com/display/tec/ProtheusDOC)

Exemplo:
@param nBase, numérico, Medida do lado ou da base
@param [nAltura], numérico, Medida da altura
@param [nBaseMenor], numérico, Medida da base menor (trapézios)

Os 2 últimos parâmetros são opcionais.

Hoje o diagnóstico está considerando como um erro no ProtheusDoc.
Seria muito interessante que isso fosse considerado tanto no diagnóstico, como na geração HTML (Informando o termo "Opcional" ao lado do parâmetro).

Isso evita termos que descrever na descrição do parâmetro se ele é opcional ou obrigatório.

Exibir o valor de constantes definidas por #define

Ao passar o mouse, exibir o valor e onde está definido o valor de uma constante definida no próprio fonte.

Seria interessante também a possibilidade de ter a funcionalidade para defines que estejam dentro dos includes.

Extensão não reconhece classes com herança

Identificado que classes que herdam outras não estão sendo detectadas pelo ProtheusDoc.

Verificar a expressão que detecta uma estrutura de classe e ajustar para entender a sintaxe com herança.

Apresentar History no Hover

  • Interpretar no Hover de identificadores as propriedades History;
  • Criar configuração para que o usuário defina se deseja ou não apresentar o History no Hover.

Adopt VS Code's 'asWebviewUri' API

Hi, I maintain VS Code's Webview API

Issue

Our telemetry suggests that your extension uses webviews and may be loading resources in these webviews using hardcoded vscode-resource: URIs. These URIs have some important limitations and don't work properly when VS Code is run in a browser. We are also making changes in the desktop version of VS Code that may cause these URIs to not work properly in future versions of VS Code.

While we are making our best effort to continue support existing webview extensions that use vscode-resource: URIs on desktop versions of VS Code, we will not able to fully support all uses cases.

Fix

To ensure that your extension continues to work in as many environments as possible—including on web and remotely—please:

These APIs shipped around 2 years ago so they should be available in all modern versions of VS Code. You can find additional information about the issue here: microsoft/vscode#97962

Let me know if you have any questions about this change

Marcar informações geradas automáticas como warning

Muitas vezes quando estamos fazendo a documentação apertamos o atalho de geração de documentação e esquecemos de preencher o conteúdo.

Marcar como warning propriedades de descrição que estejam com o valor gerado automático.

Tornar snippet @history dinâmico

Tornar o Snippet @history dinâmico, para que ao ser chamado adicione o nome do usuário conectado ou a configuração autor_default.

Utilizar mesmo comportamento do Autor do Bloco ProtheusDoc.

Extension causes high cpu load

  • Issue Type: Performance
  • Extension Name: protheusdoc-vscode
  • Extension Version: 0.6.1
  • OS Version: Windows_NT x64 10.0.18362
  • VSCode version: 1.52.0

⚠️ Make sure to attach this file from your home-directory:
⚠️c:\Users\SANDRO~1.COS\AppData\Local\Temp\AlencarGabriel.protheusdoc-vscode-unresponsive.cpuprofile.txt

Find more details here: https://github.com/microsoft/vscode/wiki/Explain-extension-causes-high-cpu-load

AlencarGabriel.protheusdoc-vscode-unresponsive.cpuprofile.txt

Extensão não funciona em ambientes Case Sensitive

Está apresentando os erros
Dentro do arquivo .PRW ao chamar o Protheus >> Adicionar bloco de Documentação

Command 'ProtheusDoc - Adicionar bloco de Documentação' resulted in an error (command 'protheusdoc.addDocBlock' not found)

Command 'ProtheusDoc - Atualizar tabela de documentações' resulted in an error (command 'protheusdoc.updateTableDoc' not found)

Tabela de documentações ignorando extensão PRW maiúscula

Identificado após alguns testes que extensões tratadas com Glob patterns na configuração "protheusDoc.include" não estão considerando arquivos com extensão maiúscula.

Como a tabela de documentações usa este padrão global para buscar os arquivos na workspace, arquivos com extensão maiúscula estão sendo ignorados.

Problema reportado na microsoft/vscode#10633, e aguardando correção.

Numeração incorreta no link da documentação

Identificado que a numeração da linha que é exibida na localização do Documentation Hover, não representa a linha correta no arquivo (-1).

O link funciona e posiciona corretamente.

Informa que é linha 2: image

Mas é linha 3: image

Não considera a tipagem definida

Bom dia!

Ao documentar uma função que tenha os parâmetros e/ou retorno tipado, deveria assumir os definidos e não tentar adivinhar.

Resultado:
image

Esperado:

image

Snippets precedidas por espaço não reconhecidas

Ao gerar a documentação ProtheusDoc acima da função as snippets @type, @author, @SInCE, @Version quando possuem espaçamento para alinhamento/formatação ao gerar Documentação HTML seus conteúdos não são considerados e devidamente formatados.

Para correta geração e formatação da Documentação HTML as chaves devem permanecer no início da linha, sem espaço a esquerda.

//{Protheus.doc} MyFunc
{{TAB}}Função estática geral.
{{TAB}}@type function
{{TAB}}@author denis.galvani
{{TAB}}@SInCE 05/04/2019
{{TAB}}@Version 2.0
{{TAB}}@param aMvPar , array , Parâmetros de pesquisa via Pergunte
{{TAB}}@param lJob , logical , Execução via JOB ou rotina de reprocessamento (por usuário)
{{TAB}}@return array , Valores de parâmetros de Pergunta de acordo com tipo de execução (JOB ou usuário)
{{TAB}}@see - Parâmetros (SC6): MV_STALM, MV_TPLIM, MV_DIATR;
{{TAB}}{{TAB}} - Pergunte (SX1) - "LIBCRDT"
{{TAB}}@history denis.galvani, 22/08/2020, denis.galvani, Inclusão/padronização de documentação de cabeçalho
{{TAB}}/
/
Static Function MyFunc(aMvPar,lJob)

Apresentar decoração apenas em fontes AdvPL

Identificado que a decoração das propriedades @param, etc... Estão sendo aplicadas em todos os tipos de arquivo.

Ajustar para que sejam apresentadas somente em linguagens suportadas pelo ProtheusDoc.

Extensão não deixa VsCode apresentar as palavras do editor

Após algumas análises, testes e reports dos usuários, foi identificado que o completion provider, implementado na extensão para apresentar o snippet para criação da documentação ProtheusDoc, está fazendo com que o VsCode pare de sugerir na primeira inspeção do IntelliSense as palavras, apresentando na maioria das vezes somente os snippets.

Check-list dos ajustes:

  • Retirar provedor do Snippet Add ProtheusDoc Block; (7fc214f)
  • Refazer GIF de apresentação da extensão;
  • Ajustar Wiki de Comandos para remover a documentação com Snippet;
  • Ajustar What's new/Change log informando (a nova melhoria implementada)

O problema (original da não apresentação das palavras quando há provedor de completion) já foi identificado pela Microsoft na microsoft/vscode#21611, porém ainda não resolvido.

Primeiramente muito obrigado! "Segundamente..."

Primeiramente muito obrigado Gabriel essa extensão é show mesmo! O quão difícil seria ter mais uma sessão com os parâmetros de sistema (SX6) encapsulados dentro de cada função avaliada? :)

Parâmetros vindo vazios

Identificado que nos casos onde a assinatura da função tem ( ) mas não tem definição de parâmetros, a extensão está adicionando uma seção de parâmetros vazia.

  • Tratar para trazer o bloco de parâmetros apenas quando houver definição.

Link dos métodos está vindo errado

Identificado após alguns testes que o link do hover para documentação dos identificadores de métodos está sempre referenciando a linha 1 do arquivo.

image

findAdvpl causes high CPU

Identificado que em determinados momentos, ao chamar o IntelliSense o VsCode travava e causava auto consumo de CPU.

Após vários testes, foi identificado que havia uma falha na expressão regular que detecta as assinaturas AdvPL suportadas, sempre que a linha posicionada era a declaração de um método WS REST com WSSYNTAX contendo "/", exemplo:

WSMETHOD GET DESCRIPTION "Saldo B2 do Produto" WSSYNTAX "asdfa/sdas/adfa"

CPU-20210226T210330.838Z.cpuprofile (remover .txt para utilizar)

Protheus Doc - Webservices

Bom dia.

Ao inserir um webservice (Rest / Soap), o protheusDoc não gera o cabeçalho.
Isso é uma limitação do ProtheusDoc mesmo ou do plugin?

Att.

Erro na detecção de parâmetros

Identificado que parâmetros de função que continham a palavra As estão sendo cortados.

Exemplo: cFase

/*/{Protheus.doc} COMP022_MVC
description
@type function
@version
@author Gabriel Alencar
@since 27/04/2020
@param cF, character, param_description
@param cPara, character, param_description
@return return_type, return_description
/*/
User Function COMP022_MVC(cFase, cPara)

Parte do texto nas descrições não é documentado

Ao utilizar vírgula (,) na descrição das propriedades @param e @return o conteúdo após a vírgula não é incluído na documentação.

Exemplo:

@param cParam1, character, Descrição do parâmetro, ref. ao campo "ABC_XYZ"
@return NULL, Nenhum, vazio

  • "Descrição" com vírgula não são totalmente incluídas na documentação HTML;
  • Coluna "Descrição", na tabela "Parâmetros" omite conteúdo - , ref. ao campo "ABC_XYZ";
  • Coluna "Descrição", na tabela "Retorno" omite conteúdo - , vazio

Exemplo - Resultado na Documentação HTML:

Parâmetros

Nome Tipo Descrição
cParam1 character Descrição do parâmetro

Retorno

Tipo Descrição
NULL Nenhum

Conteúdo correto esperado

Na Documentação HTML, para este Exemplo:

Parâmetros

Nome Tipo Descrição
cParam1 character Descrição do parâmetro , ref. ao campo "ABC_XYZ"

Retorno

Tipo Descrição
NULL Nenhum , vazio

findAdvpl causes high CPU

Identificado que em determinados momentos, ao chamar o IntelliSense o VsCode travava e causava auto consumo de CPU.

Após vários testes, foi identificado que havia uma falha na expressão regular que detecta as assinaturas AdvPL suportadas, sempre que a linha posicionada era a declaração de um método WS REST com WSSYNTAX contendo "/", exemplo:

WSMETHOD GET DESCRIPTION "Saldo B2 do Produto" WSSYNTAX "asdfa/sdas/adfa"

CPU-20210226T210330.838Z.cpuprofile (remover .txt para utilizar)

Function não está sendo tratada

O interpretador de sintaxe das funções, não está considerando funções fora User ou Static.

Tratar expressão para entender também function

Tornar snippet @author dinâmico

Tornar o Snippet @author dinâmico, para que ao ser chamado adicione o nome do usuário conectado ou a configuração autor_default.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.