Tai-e (chinês: 太阿; pronúncia: [ˈtaɪə:]) é uma nova estrutura de análise estática para Java (consulte nosso artigo ISSTA 2023 para obter detalhes), que apresenta indiscutivelmente os "melhores" designs de ambos os novos que propusemos e aqueles de frameworks clássicos como Soot, WALA, Doop e SpotBugs. Tai-e é fácil de aprender, fácil de usar, eficiente e altamente extensível, permitindo desenvolver facilmente novas análises sobre ele.
Atualmente, o Tai-e fornece os seguintes componentes principais de análise (e mais análises estão a caminho):
clone()
incorretoTai-e é desenvolvido em Java e pode ser executado nos principais sistemas operacionais, incluindo Windows, Linux e macOS.
Como cortesia aos desenvolvedores, esperamos que você cite o artigo do ISSTA 2023 que descreve a estrutura Tai-e em seu trabalho de pesquisa:
Tian Tan e Yue Li. 2023. Tai-e: uma estrutura de análise estática amigável ao desenvolvedor para Java, aproveitando os bons designs dos clássicos. Em Anais do 32º Simpósio Internacional ACM SIGSOFT sobre Teste e Análise de Software (ISSTA '23), 17 a 21 de julho de 2023, Seattle, WA, EUA (pdf, bibtex).
A maneira mais simples é baixá-lo em GitHub Releases.
Alternativamente, você mesmo pode construir o Tai-e mais recente a partir do código-fonte. Isso pode ser feito simplesmente por meio do Gradle (certifique-se de que o Java 17 (ou versão superior) esteja disponível em seu sistema). Você só precisa executar o comando gradlew fatJar
e então o jar executável será gerado em tai-e/build/
, que inclui Tai-e e todas as suas dependências.
O Tai-e foi projetado como uma ferramenta autônoma, mas você também tem a opção de incluí-lo em seu projeto como uma dependência. Ele está disponível em repositórios Maven, permitindo integrá-lo facilmente em seus projetos Java usando ferramentas de construção como Gradle e Maven. Mantemos versões estáveis e mais recentes do Tai-e, e aqui estão as coordenadas correspondentes nos formatos de script Gradle e Maven:
Para Gradle:
dependencies {
implementation( " net.pascal-lab:tai-e:0.2.2 " )
}
Para Maven:
< dependencies >
< dependency >
< groupId >net.pascal-lab</ groupId >
< artifactId >tai-e</ artifactId >
< version >0.2.2</ version >
</ dependency >
</ dependencies >
Para Gradle:
repositories {
mavenCentral()
maven { url = uri( " https://s01.oss.sonatype.org/content/repositories/snapshots/ " ) }
}
dependencies {
implementation( " net.pascal-lab:tai-e:0.5.1-SNAPSHOT " )
}
Para Maven:
< repositories >
< repository >
< id >snapshots</ id >
< name >Sonatype snapshot server</ name >
< url >https://s01.oss.sonatype.org/content/repositories/snapshots/</ url >
</ repository >
</ repositories >
< dependencies >
< dependency >
< groupId >net.pascal-lab</ groupId >
< artifactId >tai-e</ artifactId >
< version >0.5.1-SNAPSHOT</ version >
</ dependency >
</ dependencies >
Você pode usar essas coordenadas em seus scripts Gradle ou Maven para incluir a versão desejada do Tai-e em seu projeto.
Fornecemos informações detalhadas do Tai-e na documentação de referência, que cobre vários aspectos, como configuração no IntelliJ IDEA, opções de linha de comando e desenvolvimento de novas análises.
Observe que a documentação de referência mencionada acima refere-se à versão mais recente do Tai-e. Se você precisar de documentação para uma versão estável específica, consulte o Índice de Documentação. Além disso, a documentação está incluída no repositório e mantida junto com o código-fonte. Você pode acessar a documentação de referência para uma versão específica do Tai-e (no formato AsciiDoc) explorando o diretório docs/en, começando em index.adoc. Isso permite que você acesse a documentação específica da versão do Tai-e.
Além da documentação de referência, Javadocs para Tai-e também estão disponíveis como um recurso de referência útil.
Como estamos desenvolvendo e atualizando ativamente o Tai-e, registramos as mudanças notáveis que fizemos, especialmente os novos recursos e as alterações mais recentes, no CHANGELOG. Se você encontrar algo errado após atualizar o Tai-e, talvez você possa verificar o CHANGELOG para obter informações úteis.
Além disso, desenvolvemos uma versão educacional do Tai-e onde oito tarefas de programação são cuidadosamente projetadas para treinar sistematicamente os alunos na implementação de várias técnicas de análise estática para analisar programas Java reais. A versão educacional compartilha uma grande quantidade de código com o Tai-e, portanto, fazer as tarefas seria uma boa maneira de se familiarizar com o Tai-e.