Giter Site home page Giter Site logo

robsonrosilva / advpl-sintaxe Goto Github PK

View Code? Open in Web Editor NEW
12.0 6.0 6.0 4.22 MB

Extensão para o VsCode que adiciona recursos de ADVPL snippets da linguagem, análise de qualidade e sintaxe de programas e funcionalidades para promover os desenvolvimentos utilizando git de forma a enviar para homologação e produção de forma simples, gerando TAGS ao mergear para a branch de produção.

License: The Unlicense

TypeScript 90.73% JavaScript 9.27%
advpl protheus totvs-protheus vscode vscode-extension

advpl-sintaxe's Introduction

Version Installs Rating

Leia-me

Visual Studio Code ADVPL Análise e GIT

Esta extensão adiciona no visual code VsCode MarketPlace:

  • Análise de qualidade e sintaxe de programas ADVPL (LINT).
  • Identação de códigos ADVPL.
  • Snippets da linguagem.
  • Funcionalidades para promover os desenvolvimentos utilizando git de forma a enviar para homologação e produção de forma simples, gerando TAGS ao mergear para a branch de produção.

Caso você encontre algum problema ou queira dar alguma sugestão de melhoria, por favor abra uma issue no GitHub.

Instalação

  1. Intalação Visual Studio Code 1.85.0 ou superior
  2. Iniciar o Visual Studio Code
  3. Na aba de pompt de comando Ctrl-Shift-P (Windows, Linux) ou Cmd-Shift-P (OSX)
  4. Selecione Extensão
  5. Digite ADVPL
  6. Escolha a extensão
  7. Recarregue Visual Studio Code

Análise de qualidade e sintaxe de programas ADVPL (LINT)

ITENS ANALISADOS

Verifica se estão sendo utilizados padrões básicos de qualidade como:

  • EmbededSql em vez de TcQuery.
  • Include TOTVS.CH.
  • Includes desnecessários.
  • Includes que faltam.
  • Include Obsoleto.
  • Comentários desnecessários.
  • Padrões de comentários.(Necessário configurar o settings)
  • Comentários de todas as funções, métodos, webservices e classes.
  • Critica de uso de Connout.
  • Critica de conflitos de merge.
  • Utilização de CHR(13) + CHR(10) em vez da variável CRLF.
  • Tabelas fixas nas queries.(Necessário configurar o settings)
  • Schema (banco de dados) fixo na query.(Necessário configurar o settings)
  • Função duplicada no projeto.
  • Arquivo com nome duplicado no projeto.
  • Utilização de DETELE FROM.
  • Uso de MV_FOLMES.
  • Uso de Select *.
  • Uso de ISAM(DbUSeArea).
  • Uso de PutSX1.
  • Uso de Dicionário de Dados.
  • Validação de FreeObj(self), conforme binário 12.1.27 de outubro/2020.
  • Validação de funções obsoletas, conforme binário 12.1.2210 de outubro/2022.

Análise de Fontes

GIT

BRANCHES

  • Merge para Teste Branch de Teste é uma branch onde todas as features e hotfixes serão enviados para submeter aos primeiros testes.
  • Merge para Homologação Branch de Homologação é uma branch onde são enviadas todas as implementações que estão testadas e aprovadas.
  • Merge para Produção Branch de Produção é destinada a ser aplicada em ambiente de produção onde sempre se deve taguear a versão a ser aplicada.
  • Atualiza Branche Atualiza a Branche Release e faz um merge para a branche atual.

FLUXO

Fluxo do GIT

Snippets

Foram montados snippets para facilitar o desenvolvimento de funcionalidades ADVPL.

Snippets

  1. TReport
  • tReport1 - Modelo de TReport 1 Sessão.
  • tReport2 - Modelo de TReport 2 Sessões.
  • tReport3 - Modelo de TReport 3 Sessões.
  • tReport4 - Modelo de TReport 4 Sessões.
  • tReport5 - Modelo de TReport 5 Sessões.
  • tReportTrCell - Modelo de TRCell para uso nas sessões.
  • tReportAllParam - Modelo de adição de parâmetros de impressão.
  1. WebServices
  • WebService - Estrutura base do Fonte para WebServices.
  • WsMethodDec - Estrutura de declaração de método.
  • WsMethod - Estrutura do método.
  • WsD__ - Estrutura de declaração de WsData.
  • WSStruct - Estrutura de Array para o WsData tipo Array.
  1. WebServices REST
  • WebServiceREST - Estrutura base do Fonte para WebServices REST.
  • WsMethodGetREST - Estrutura do método GET para WebServices REST.
  • WsMethodPostREST - Estrutura do método POST para WebServices REST.
  • WsMethodPutREST - Estrutura do método PUT para WebServices REST.
  • WsMethodDeleteREST - Estrutura do método DELETE para WebServices REST.
  • WsResponseTrueREST - Retorno positivo para a operação para WebServices REST.
  • WsResponseFalseREST - Retorno negativo para a operação para WebServices REST.
  1. Linguagem
  • WHILETB - While para Tabela.
  • FOR - For convencional.
  • CASE - Case completo.
  • IF - If convencional.
  • BEGINSQL - Modelo de EmbededSql.

Modelo de settings.json

{
  "advpl-sintaxe": {
    "branchHomologacao": "release",
    "branchProducao": "master",
    "branchTeste": "validacao",
    "comentFontPad": [
      "/*//#########################################################################################",
      "Projeto\\ \\:",
      "Modulo\\ \\ \\:",
      "Fonte\\ \\ \\ \\:",
      "Objetivo\\:"
    ],
    "empresas": ["01", "02"],
    "ownerDb": ["PROTHEUS", "PROTHEUS12"],
    "validaProjeto": true,
    "cache": true,
    "tempoValidacao": 5000
  },
  "advplformat.noQueryFormatter": false,
  "advplformat.updateComment": false,
  "advplformat.queryLanguage": "sql"
}

Código

Github

** Enjoy!**

advpl-sintaxe's People

Contributors

robsonrosilva avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

advpl-sintaxe's Issues

Permitir Desabilitar Críticas

Seria interessante ter na extensão a possibilidade de desabilitar todas as críticas que ela faz ou pelo menos as de boas práticas, pois permitiria cada programador configurar quais achar necessário.
Por padrão todas as críticas poderiam ser habilitadas, porém permitir configurar e desabilitar.

dúvidas

Olá, estou testando seu pluguin, sugiram algumas duvidas:
Como usa o modelo de comentario comentFontPad?
Epoderia descrevre para que serve as seguintes configurações:
"empresas": ["01", "02"],
"ownerDb": ["PROTHEUS", "PROTHEUS12"].

abraços.

Análise em todo inicio do VsCode

Seria possível gerar um arquivo com os registros já analisados para que toda vez que o VsCode é inicializado ele não efetuasse toda a análise de fontes novamente?
Atualmente tenho muitos fontes e cada vez que fecho o VsCode e abro, leva muito tempo até ficar "usável" devido ao tempo de processamento de todos os fontes.

Att.,

Aponta como erro quando utiliza a palavra "Copy to "

Bom dia.

Quando utilizo uma variável tipo caractere e atribuo o texto "Copy to ", a extensão indica erro: Chamada descontinuada de Driver ISAM. Use a API FWTemporaryTable.

Isto ocorre somente se o texto tiver espaço.
Veja a imagem.

Screenshot_179

At
Rodrigo de Oliveira

Snippet multilanguage

Robson, Sabe como implementar localizacao nos snippets?

Ou seja, usar os mesmos snippets, mas pegar parte do Body e a descricao em outro idioma, dependendo do locale... (sou do mercado internacional e eh importante faze-los em inges, espanhol e russo)
[IMPORTADO DO ADVPL-SNIPPETS]

Função, Classe, Método ou WebService não comentado!

aAdd(aSX3,{'SE2','10','E2_NATUREZ','C',10,0,'Natureza','Modalidad','Class','Codigo da natureza','Codigo de la Modalidad','Class Code','@!','FA050Natur().and.FinVldNat( .F., M->E2_NATUREZ, 2 )','€€€€€€€€€€€€€€ ','','FSWSE1',1,'ƒ€','','S','U','S','A','R','','','','','','','','','','','S','','','N','N','N','','','1','2014021017:23:31'})

image

Snippet multilanguage

Robson, Sabe como implementar localizacao nos snippets?

Ou seja, usar os mesmos snippets, mas pegar parte do Body e a descricao em outro idioma, dependendo do locale... (sou do mercado internacional e eh importante faze-los em inges, espanhol e russo)

Extension causes high cpu load

  • Issue Type: Performance
  • Extension Name: advpl-sintaxe
  • Extension Version: 1.0.7
  • OS Version: Windows_NT x64 10.0.18363
  • VSCode version: 1.41.1

⚠️ Make sure to attach this file from your home-directory:
⚠️C:\Users\jtjun\robsonrosilva.advpl-sintaxe-unresponsive.cpuprofile.txt [robsonrosilva.advpl-sintaxe-unresponsive.cpuprofile.txt](https://github.com/robsonrosilva/advpl-sintaxe/files/4118639/robsonrosilva.advpl-sintaxe-unresponsive.cpuprofile.txt)

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

Validar apenas fonte atual

Seria interessante uma forma que fosse possível validar apenas o fonte atual, seja quando aberto ou apenas quando for compila-lo

Analise do CHR(13) e CHR(10)

Tenho uma rotina que retira esses caracteres. Não são todos os arquivos onde consta o CHR(13)+CHR(10) as vezes vem somente o CHR(13) ou CHR(10).

Análise de fonte

Olá,

Gostaria de saber se seria possível analisar apenas o arquivo atualmente aberto, porque ele analise todos os arquivos do WorkSpace aberto.
Será que seria possível?

Não está analisando SX5

If lProcessa
	U_PXGPEM19(, SRA->RA_FILIAL + SRA->RA_MAT)
Else
	//inclui o registro se ele não existir
	SX5->(DbSetOrder(2))
	If ! SX5->(DbSeek(FWxFilial('SX5') + 'ZW' + SRA->RA_FILIAL + SRA->RA_MAT))
		RecLock('SX5', .T.)
			X5_FILIAL   := FWxFilial('SX5')
			X5_TABELA   := 'ZW'
			X5_DESCRI   := SRA->RA_FILIAL + SRA->RA_MAT
		SX5->(MsUnlock())
	EndIf
EndIf

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.