Igor Wiese

76 papers A* 4A 7C 2Journal 39Unranked 24
YearRankTypeTitle / Venue / Authors
2025 J jnl
Empir. Softw. Eng.
Nicole Davila, Ingrid Nunes, Igor Wiese
2025 conf
ISSREW
Igor Wiese, George da Silva B. Souza, Jairo Souza, Leo Fernandes, Maria Eduarda T. S. Ikeda, Daniel Oliveira dos Santos, Ismael Trindade Fraga, Renato Torres Pinto, Erick A. Barboza, Baldoino Fonseca, Márcio Ribeiro
2025 J jnl
Empir. Softw. Eng.
Camila A. Paiva, Raquel Maximino, Frederico Paiva, Rafael Accetta Vieira, Nicole Espanha, João Felipe Pimentel, Igor Wiese, Marco Aurélio Gerosa, Igor Steinmacher, Leonardo Murta, Vanessa Braganholo
2025 conf
ISSREW
Leo Fernandes, João Vitor Souza Rocha, Igor Wiese, João Lucas Correia, Ismael Trindade Fraga, Renato Torres Pinto, Erick A. Barboza, Baldoino Fonseca, Márcio Ribeiro
2025 conf
SBES
Ana Maciel, Mairieli Wessel, Igor Wiese, Igor Steinmacher
2025 conf
IWSSIP
Munif Gebara, Igor Wiese, Yandre M. G. Costa
2024 conf
ICSE-SEIP
Nicole Davila, Igor Wiese, Igor Steinmacher, Lucas Lucio da Silva, Andre Kawamoto, Gilson Jose Peres Favaro, Ingrid Nunes
2024 conf
SBES
Giniele Pinho, Aguiar Jeová Caçula, Lucas Costa, Igor Wiese, Allysson Allex Araújo
2024 conf
CHASE@ICSE
Jorge Melegati, Nicolas Nascimento, Rafael Chanin, Afonso Sales, Igor Wiese
2024 J jnl
CoRR
Eduardo Guerra, Everaldo Gomes, Jeferson Ferreira, Igor Wiese, Phyllipe Lima, Marco Aurélio Gerosa, Paulo Meirelles
2024 J jnl
Empir. Softw. Eng.
Eduardo Guerra, Everaldo Gomes, Jeferson Ferreira, Igor Wiese, Phyllipe Lima, Marco Aurélio Gerosa, Paulo Meirelles
2024 J jnl
Inf. Softw. Technol.
Jorge Melegati, Igor Wiese, Eduardo Guerra, Rafael Chanin, Abdullah Aldaeej, Tommi Mikkonen, Rafael Prikladnicki, Xiaofeng Wang
2024 J jnl
CoRR
Aline de Campos, Jorge Melegati, Nicolas Nascimento, Rafael Chanin, Afonso Sales, Igor Wiese
2024 J jnl
IEEE Softw.
Nicole Davila, Jorge Melegati, Igor Wiese
2023 J jnl
J. Softw. Evol. Process.
Awdren L. Fontão, Sergio Cleger-Tamayo, Igor Wiese, Rodrigo Pereira dos Santos, Arilo Claudio Dias-Neto
2023 conf
ICSE (SEIS)
Ítalo Santos, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2023 J jnl
CoRR
Ítalo Santos, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2023 conf
ESEC/SIGSOFT FSE
Felipe Fronchetti, David C. Shepherd, Igor Wiese, Christoph Treude, Marco Aurélio Gerosa, Igor Steinmacher
2023 J jnl
CoRR
Fabio Santos, Joseph Vargovich, Bianca Trinkenreich, Ítalo Santos, Jacob Penney, Ricardo Britto, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2023 J jnl
Empir. Softw. Eng.
Fabio Santos, Joseph Vargovich, Bianca Trinkenreich, Ítalo Santos, Jacob Penney, Ricardo Britto, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2023 A conf
MSR
Fabio Santos, Jacob Penney, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2022 conf
SBES
Felipe Soupinski, Pedro Arantes, Igor Steinmacher, Igor Wiese, Hudson Borges, Bruno B. P. Cafeo, Awdren de Lima Fontão
2022 conf
SBES
Hugo Henrique Fumero de Souza, Igor Wiese, Igor Steinmacher, Reginaldo Ré
2022 J jnl
J. Softw. Eng. Res. Dev.
Fernando Kamei, Igor Wiese, Gustavo Pinto, Waldemar Ferreira, Márcio Ribeiro, Renata Souza, Sérgio Soares
2022 A* conf
ICSE
Mairieli Santos Wessel, Ahmad Abdellatif, Igor Wiese, Tayana Conte, Emad Shihab, Marco Aurélio Gerosa, Igor Steinmacher
2022 A conf
SANER
Ítalo Santos, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2022 A conf
ESEM
Fabio Santos, Bianca Trinkenreich, João Felipe Pimentel, Igor Wiese, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2022 J jnl
J. Comput. Lang.
Felipe Fronchetti, Nico Ritschel, Reid Holmes, Linxi Li, Mauricio Soto, Raoul Jetley, Igor Wiese, David C. Shepherd
2022 C conf
SCAM
Naelson Oliveira, Márcio Ribeiro, Rodrigo Bonifácio, Rohit Gheyi, Igor Wiese, Baldoino Fonseca
2022 J jnl
IEEE Trans. Software Eng.
Bianca Trinkenreich, Mariam Guizani, Igor Wiese, Tayana Conte, Marco Aurélio Gerosa, Anita Sarma, Igor Steinmacher
2022 J jnl
Empir. Softw. Eng.
Mairieli Santos Wessel, Alexander Serebrenik, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2022 J jnl
ACM Trans. Softw. Eng. Methodol.
Bianca Trinkenreich, Igor Wiese, Anita Sarma, Marco Aurélio Gerosa, Igor Steinmacher
2021 conf
SBES
Daniel D. R. Barros, Flávio E. A. Horita, Igor Wiese, Kanan Silva
2021 J jnl
CoRR
Daniel D. R. Barros, Flávio E. A. Horita, Igor Wiese, Kanan Silva
2021 J jnl
CoRR
Fabio Santos, Igor Wiese, Bianca Trinkenreich, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2021 A conf
MSR
Fabio Santos, Igor Wiese, Bianca Trinkenreich, Igor Steinmacher, Anita Sarma, Marco Aurélio Gerosa
2021 J jnl
Proc. ACM Hum. Comput. Interact.
Mairieli Santos Wessel, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2021 J jnl
CoRR
Mairieli Santos Wessel, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2021 J jnl
Empir. Softw. Eng.
João Pedro Moraes, Ivanilton Polato, Igor Wiese, Filipe Saraiva, Gustavo Pinto
2021 J jnl
CoRR
Fernando Kamei, Igor Wiese, Crescencio Lima, Ivanilton Polato, Vilmar Nepomuceno, Waldemar Ferreira, Márcio Ribeiro, Carolline Pena, Bruno Cartaxo, Gustavo Pinto, Sérgio Soares
2021 J jnl
Inf. Softw. Technol.
Fernando Kamei, Igor Wiese, Crescencio Lima, Ivanilton Polato, Vilmar Nepomuceno, Waldemar Ferreira, Márcio Ribeiro, Carolline Pena, Bruno Cartaxo, Gustavo Pinto, Sérgio Soares
2021 conf
ICSOB
Victor Farias, Igor Wiese, Rodrigo Pereira dos Santos
2021 J jnl
CoRR
Mairieli Santos Wessel, Alexander Serebrenik, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2021 J jnl
CoRR
Bianca Trinkenreich, Mariam Guizani, Igor Wiese, Tayana Conte, Marco Aurélio Gerosa, Anita Sarma, Igor Steinmacher
2021 A* conf
ICSE
Marco Aurélio Gerosa, Igor Wiese, Bianca Trinkenreich, Georg Link, Gregorio Robles, Christoph Treude, Igor Steinmacher, Anita Sarma
2021 J jnl
CoRR
Marco Aurélio Gerosa, Igor Wiese, Bianca Trinkenreich, Georg Link, Gregorio Robles, Christoph Treude, Igor Steinmacher, Anita Sarma
2021 J jnl
IEEE Trans. Software Eng.
Luis Melo, Igor Wiese, Marcelo d'Amorim
2021 A conf
ESEM
Fernando Kamei, Gustavo Pinto, Igor Wiese, Márcio Ribeiro, Sérgio Soares
2021 J jnl
CoRR
Fernando Kamei, Gustavo Pinto, Igor Wiese, Márcio Ribeiro, Sérgio Soares
2021 A* conf
ICSE
Edson Dias, Paulo Meirelles, Fernando Castor, Igor Steinmacher, Igor Wiese, Gustavo Pinto
2021 J jnl
CoRR
Bianca Trinkenreich, Igor Wiese, Anita Sarma, Marco Aurélio Gerosa, Igor Steinmacher
2020 conf
ESEC/SIGSOFT FSE
Jefferson De Oliveira Silva, Igor Wiese, Daniel M. Germán, Christoph Treude, Marco Aurélio Gerosa, Igor Steinmacher
2020 conf
SBES
Vinicius Condina, Paulo Malcher, Victor Farias, Rodrigo Pereira dos Santos, Awdren de Lima Fontão, Igor Wiese, Davi Viana
2020 J jnl
CoRR
Fabio Pacheco, Igor Wiese, Bruno Cartaxo, Igor Steinmacher, Gustavo Pinto
2020 conf
SBES
Daniel Massanori, Bruno B. P. Cafeo, Igor Wiese, Awdren de Lima Fontão
2020 A conf
ICSME
Mairieli Santos Wessel, Alexander Serebrenik, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2020 J jnl
CoRR
João Pedro Moraes, Ivanilton Polato, Igor Wiese, Filipe Saraiva, Gustavo Pinto
2020 J jnl
J. Syst. Softw.
Jefferson De Oliveira Silva, Igor Wiese, Daniel M. Germán, Christoph Treude, Marco Aurélio Gerosa, Igor Steinmacher
2020 J jnl
Proc. ACM Hum. Comput. Interact.
Bianca Trinkenreich, Mariam Guizani, Igor Wiese, Anita Sarma, Igor Steinmacher
2020 J jnl
IEEE Softw.
Igor Wiese, Ivanilton Polato, Gustavo Pinto
2020 conf
SBES
Fernando Kamei, Igor Wiese, Gustavo Pinto, Márcio Ribeiro, Sérgio Soares
2020 J jnl
CoRR
Fernando Kamei, Igor Wiese, Gustavo Pinto, Márcio Ribeiro, Sérgio Soares
2020 C conf
ICGSE
Awdren de Lima Fontão, Sergio Cleger-Tamayo, Igor Wiese, Rodrigo Pereira dos Santos, Arilo Claudio Dias-Neto
2020 conf
SBES
Mairieli Santos Wessel, Alexander Serebrenik, Igor Wiese, Igor Steinmacher, Marco Aurélio Gerosa
2019 J jnl
Braz. J. Inf. Syst.
Davi Viana, Igor Wiese, Rodrigo Pereira dos Santos, André Pimenta Freire
2019 J jnl
CoRR
Jefferson De Oliveira Silva, Igor Wiese, Daniel M. Germán, Christoph Treude, Marco Aurélio Gerosa, Igor Steinmacher
2019 conf
SBES
Fabio Pacheco, Igor Wiese, Igor Steinmacher, Bruno Cartaxo, Gustavo Pinto
2019 conf
BotSE@ICSE
Mairieli Santos Wessel, Igor Steinmacher, Igor Wiese, Marco Aurélio Gerosa
2019 conf
SBES
Leonardo C. Marques, Patrícia Matsubara, Walter Takashi Nakamura, Igor Wiese, Luciana A. M. Zaina, Tayana Conte
2019 conf
OSS
Felipe Fronchetti, Igor Wiese, Gustavo Pinto, Igor Steinmacher
2019 J jnl
IEEE Softw.
Victor Farias, Igor Wiese, Rodrigo Pereira dos Santos
2018 A conf
SANER
Gustavo Pinto, Igor Wiese, Luiz Felipe Dias
2018 A* conf
ICSE
Maurício Finavaro Aniche, Christoph Treude, Igor Steinmacher, Igor Wiese, Gustavo Pinto, Margaret-Anne D. Storey, Marco Aurélio Gerosa
2018 J jnl
J. Softw. Eng. Res. Dev.
Awdren de Lima Fontão, Bruno Ábia, Igor Wiese, Bernardo Estácio, Marcelo Quinta, Rodrigo Pereira dos Santos, Arilo Claudio Dias-Neto
2017 conf
SBSI
Charles Mendes de Macedo, Karina Valdivia Delgado, Igor Wiese
2015 conf
SBES
Igor Steinmacher, Igor Wiese, Tayana Uchôa Conte, Marco Aurélio Gerosa
tests/unit/test_extractor_registry.py
← Index tests/unit/test_extractor_registry.py python
"""
Unit tests for the extractor registry (redb/extractor_registry.py).

Verifies that all file-type groups load correctly, return the expected
extractors, and that lookup/filtering logic works as intended.
"""
import pytest

from redb.extractor_registry import (
    get_filetype_modules,
    get_extractor_class,
    FILETYPE_TO_GROUP,
    _REGISTRY,
)

pytestmark = [pytest.mark.unit]


# ============================================================================
# get_filetype_modules — group loading
# ============================================================================

class TestGetFiletypeModules:

    @pytest.mark.parametrize("filetype,expected_names", [
        ("pebin", [
            "PEFeaturesExtractor", "PEImportExtractor", "PEResourceExtractor",
            "PEOverlayExtractor", "PESectionExtractor", "PESignatureExtractor",
            "PEExtraFindings", "PEInconstistencyTestsExtractor", "PEDotNetExtractor",
        ]),
        ("elf", [
            "ELFFeaturesExtractor", "ELFSegmentExtractor", "ELFSectionExtractor",
            "ELFDependencyExtractor", "ELFSymbolExtractor", "ELFImportExtractor",
            "ELFExportExtractor", "ELFRelocationExtractor", "ELFNotesExtractor",
        ]),
        ("macho", [
            "MachOFeaturesExtractor", "MachOSegmentExtractor",
            "MachOImportExtractor", "MachOExportExtractor",
            "MachODylibExtractor", "MachOSignatureExtractor",
        ]),
        ("apk", [
            "APKFeaturesExtractor", "APKManifestExtractor",
            "APKPermissionsExtractor", "APKSignatureExtractor",
            "APKDexExtractor", "APKResourceExtractor",
            "APKNativeLibExtractor", "APKInconsistencyTestsExtractor",
        ]),
    ])
    def test_loads_all_extractors_for_filetype(self, filetype, expected_names):
        """Each filetype group should return all its registered extractors."""
        modules = get_filetype_modules(filetype)
        names = [m.__name__ for m in modules]
        for expected in expected_names:
            assert expected in names, f"{expected} missing from {filetype} modules"

    def test_apk_excludes_decompilers(self):
        """get_filetype_modules should not include DecompileAPK."""
        modules = get_filetype_modules("apk")
        names = [m.__name__ for m in modules]
        assert "DecompileAPK" not in names

    def test_unknown_filetype_returns_empty(self):
        """An unrecognized filetype should return an empty list."""
        assert get_filetype_modules("unknown_format") == []

    def test_returned_classes_are_callable(self):
        """All returned extractor classes should be callable (i.e., actual classes)."""
        for filetype in FILETYPE_TO_GROUP:
            for cls in get_filetype_modules(filetype):
                assert callable(cls), f"{cls} is not callable"


# ============================================================================
# get_extractor_class — single lookup
# ============================================================================

class TestGetExtractorClass:

    def test_finds_pe_extractor(self):
        cls = get_extractor_class("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_finds_elf_extractor(self):
        cls = get_extractor_class("ELFSectionExtractor")
        assert cls is not None
        assert cls.__name__ == "ELFSectionExtractor"

    def test_finds_macho_extractor(self):
        cls = get_extractor_class("MachOSignatureExtractor")
        assert cls is not None
        assert cls.__name__ == "MachOSignatureExtractor"

    def test_finds_apk_extractor(self):
        cls = get_extractor_class("APKDexExtractor")
        assert cls is not None
        assert cls.__name__ == "APKDexExtractor"

    def test_finds_decompile_apk(self):
        cls = get_extractor_class("DecompileAPK")
        assert cls is not None
        assert cls.__name__ == "DecompileAPK"

    def test_returns_none_for_unknown(self):
        assert get_extractor_class("NonExistentExtractor") is None


# ============================================================================
# Registry completeness
# ============================================================================

class TestRegistryCompleteness:

    def test_all_filetypes_have_registry_group(self):
        """Every filetype in FILETYPE_TO_GROUP should map to a valid registry group."""
        for filetype, group in FILETYPE_TO_GROUP.items():
            assert group in _REGISTRY, f"filetype {filetype} maps to unknown group {group}"

    def test_all_registry_groups_are_reachable(self):
        """Every registry group should be reachable via at least one filetype."""
        reachable = set(FILETYPE_TO_GROUP.values())
        for group in _REGISTRY:
            assert group in reachable, f"registry group {group} has no filetype mapping"


# ============================================================================
# Integration with workers.get_module_by_name
# ============================================================================

class TestWorkersGetModuleByName:

    def test_resolves_common_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("BasicPropertiesExtractor")
        assert cls is not None
        assert cls.__name__ == "BasicPropertiesExtractor"

    def test_resolves_type_specific_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_resolves_decompile_apk(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("DecompileAPK")
        assert cls is not None

    def test_returns_none_for_unknown(self):
        from redb.workers import get_module_by_name
        assert get_module_by_name("BogusExtractor") is None