12 de Novembro de 2024
É um ramo que possui muitas das suas abordagens em comum com os estudos da área de análise de programas (program analysis), especialmente na área de compiladores, onde atua especialmente nas primeiras etapas do processo de compilação.
A analise de programas trata, de modo geral, da descoberta de problemas e fatos sobre programas, ela pode ser realizada sem a necessidade de executar o programa (análise estática) ou com informações provenientes de sua execução (análise dinâmica).
Powerful fast feature-rich Perl source code profiler.
metacpan.org/pod/Devel::NYTProf
Análise estática de código-fonte tem como objetivo prover informações acerca de um programa a partir do seu código-fonte sem necessidade de execução, e sem requerer qualquer outro artefato do programa além do próprio código.
Uma função cujas entradas são dados de software e cuja saı́da é um valor numérico, que pode ser interpretado como o grau em que um software possui um determinado atributo que afeta sua qualidade.
COMMITTEE, S. . S. E. S. et al. Ieee std 1061-1998 — IEEE standard for a software quality metrics methodology. IEEE Computer Society, Tech. Rep, 1998.
Métricas de código-fonte cobrem aspectos de tamanho, complexidade e qualidade, e podem indicar aspectos relevantes à manutenibilidade de um programa.
Categoria | Métrica |
---|---|
Code Quality | Lines of Code |
Code Design | Empty Interfaces |
Code Performance | Prefer Literals over Evaluation |
Object Oriented | Lack of Cohesion in Methods |
Bhutani, V., Toosi, F.G. & Buckley, J. Analysing the Analysers: An Investigation of Source Code Analysis Tools. Applied Computer Systems, 2024, Riga Technical University, vol. 29 no. 1, pp. 98-111. https://doi.org/10.2478/acss-2024-0013
mede o número classes acessadas pela classe analisada
indica acesso à atributos ou métodos
mede os métodos e atributos acessados dentro de uma mesma classe
calculado através dos componentes fracamente conectados de um grafo não-orientado
Uma medida da complexidade de software calculada em termos do acoplamento (CBO) e coesão (LCOM4).
Mede a complexidade estrutural de uma classe.
Quanto maior a complexidade de um sistema de software, maior é o esforço para compreendê-lo, modificá-lo e evoluí-lo.
Darcy, D. P. et al. The structural complexity of software: An experimental test. IEEE Transactions on Software Engineering, v. 31, n. 11, p. 982–995, Nov. 2005. ISSN 0098- 5589.
Software metrics: successes, failures and new directions
1999, doi.org/10.1016/S0164-1212(99)00035-7
Ainda vale a pena?
Sim.
Mas:
Revisiting the debate: Are code metrics useful for measuring maintenance effort?
2022, doi.org/10.1007/s10664-022-10193-8
Ferramentas de análise estática de código-fonte estão organizadas em partes ou componentes, responsáveis por implementar três funções básicas:
Nome | URL |
---|---|
sloccount | dwheeler.com/sloccount |
cloc | github.com/AlDanial/cloc |
linguist | github.com/github-linguist/linguist |
scc | github.com/boyter/scc |
tokei | github.com/XAMPPRocky/tokei |
Uma ferramenta livre e extensível para análise estática de código-fonte.
www.analizo.org
Analizo static analysis Extractor:
Doxyparse modifies the default output of Doxygen and dumps the dependencies among code elements in a YAML format.
apt install analizo
Ou:
https://github.com/analizo/analizo/blob/dev/INSTALL.md
analizo metrics <input>
analizo graph <input>
dev
branch não lançado ainda, adicionou um extrator (análise estática) para Python usando Pyan-Analizo, um fork do Pyan.open source community health on a global scale
Scientific Open Source Software
(SciOSS)
É qualquer software criado para apoiar pesquisas, usado para coletar, processar ou analisar dados.
Podem ser protótipos escritos pelos cientistas, ou produtos completos desenvolvidos profissionalmente.
M. Gruenpeter, “Defining Research Software: a controversial discussion”.
Zenodo, sept. 13, 2021. doi: 10.5281/zenodo.5504016.
Findable, Accessible, Interoperable and Reusable (FAIR).
HOWISON, J.; HERBSLEB, J. D. “Scientific software production: incentives and collaboration”.
In: Proceedings of the ACM 2011 conference., 2011. doi: 10.1145/1958824.1958904
joenio@joenio.me
Esta apresentação está disponível em:
http://joenio.me/seminario-analise-estatica-e-metricas-de-codigo
(código-fonte: http://github.com/joenio/joenio.me)
Onde e quando esta apresentação foi realizada