

####    Verificação do uso correcto do mecanismo de excepções


Nada a assinalar


####    Quebra do encapsulamento


Nada a assinalar


####    Verificação de alguns aspectos de qualidade do código


[ERROR] 045/bci/core/Book.java:24:9: Utilização de um ciclo 'for' para iterar o conteúdo da lista referenciada por '_creators' (do tipo 'List<Creator>'). Substituir por ciclo for-each ou usar um iterador dado que a utilização do método get pode ser muito ineficiente neste caso. [POIterateListWithForLoop]
Total de erros:  1


####    Verificação da boa aplicação do mecanismo de herança


[WARN] 045/bci/core/Creator.java:20:50: Parâmetro/variável local '_works' esconde atributo da classe com o mesmo nome [HiddenField]
Total de erros:  0


####    Verificação de Convenções de Codificação

[ERROR] 045/bci/core/User.java:20:34: A variável local com o nome '_notifications'não está de acordo com o padrão '^[a-z][a-zA-Z0-9]*$'. [LocalVariableName]
[ERROR] 045/bci/core/Creator.java:20:50: O parâmetro '_works' deve condizer com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [ParameterName]
Total de erros:  2

####   Verificação do processo de serialização

Iniciando a auditoria...
[INFO] 045/bci/core/LibraryManager.java:88 ObjectOutputStream criado no método 'public void save()' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 045/bci/core/LibraryManager.java:105 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 045/bci/core/LibraryManager.java:119 ObjectInputStream criado no método 'public void load(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[ERROR] Número errado de instâncias criadas de 'ObjectOutputStream'. Devia ser 1 e é '2'. [CheckSerialization]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  Verificação do princípio de desenho aberto/fechado

Iniciando a auditoria...
[WARN] 045/bci/core/MyParser.java:35 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'components[ ]' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
Auditoria completa.

####  Verificação de dependência app de core


Nada a assinalar


####  Verificação do uso desnecessário de super


Nada a assinalar


####  Verificação de dependência de core de app


Nada a assinalar


####  Verificação do uso de membros estáticos

Iniciando a auditoria...
[ERROR] 045/bci/core/Library.java:22 Membro estático 'int _nextUserId' não recomendável. [POStaticMember]
[ERROR] 045/bci/core/Library.java:23 Membro estático 'int _nextWorkId' não recomendável. [POStaticMember]
[INFO] 045/bci/core/exception/ImportFileException.java:7 Atributo estático final 'String ERROR_MESSAGE' permitido. [POStaticMember]
[INFO] O número de serialVersionUID atributos estáticos definidos nas várias classes foi '12'. [POStaticMember]
Auditoria completa.
O Checkstyle terminou com 2 erros.

####  Verificação do nível de acesso dos atributos

Iniciando a auditoria...
[ERROR] 045/bci/core/Date.java:6 O atributo '_currentDate', com nível de acesso 'public', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  Verificação da necessidade da concretização de hashCode e equals


Nada a assinalar


####  Verificação de membros com o nível protected desnecessário


Nada a assinalar


####  Verificação do mecanismo de herança II: atributos duplicados e métodos que deviam ser abstractos

Iniciando a auditoria...
[ERROR] O atributo '_type' está duplicado em todas as subclasses de 'Work'. [WriteClassStructure]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  Sumário das classes do core da aplicação

Iniciando a auditoria...
[INFO] Número total de enumerados definidos no core: 2, dos quais 0 private, 2 package-private, 0 protected e 0 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (2): '[Category, UserBehavior]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 22, dos quais 0 private, 1 package-private, 0 protected e 21 public. [WriteClassStructure]
[INFO] Classes abstractas definidas no package core da aplicação (2): '[Work, Rule]'. [WriteClassStructure]
[INFO] Classes concretas e não excepções definidas no package core da aplicação (10): '[User, Request, Creator, Notification, Date, Dvd, Book, MyParser, LibraryManager, Library]'. [WriteClassStructure]
[INFO] Excepções definidas no package core da aplicação (10): '[MissingFileAssociationException, CheckDoCopiesExist, CheckMaxPrice, CheckProfileWorkLimit, UnavailableFileException, CheckUserIsSuspended, CheckRequestTwice, ImportFileException, CheckNoReference, UnrecognizedEntryException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 63, dos quais 4 private, 2 package-private, 0 protected e 57 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 40, dos quais 39 private, 0 package-private, 0 protected e 1 public. [WriteClassStructure]
Auditoria completa.

Descrição das estruturas de dados do core do projecto

Iniciando a auditoria...
[INFO] enum Category (  )

  ###### Métodos ###### 

    public String toString()
    public String toString()
    public String toString()

 [WriteClassStructure]
[INFO] enum UserBehavior (  )

  ###### Métodos ###### 

    public String toString()
    public String toString()
    public String toString()

 [WriteClassStructure]
[INFO] class User ( public implements Serializable )

  ###### Atributos ###### 

    private int _id
    private boolean _isActive
    private String _name
    private String _email
    private UserBehavior _userBehavior
    private int _maxRequests
    private List<Request> _requests
    private int _multa

  ###### Métodos ###### 

    public Collection<Notification> getNotification()
    public User createUser(int id, String name, String email)
    public User getUser(int id, List users)
    public int getId()
    public String toString()
    public boolean isActive()
    public void payFine()

 [WriteClassStructure]
[INFO] class Request ( public implements Serializable )

  ###### Atributos ###### 

    private int _deadline

 [WriteClassStructure]
[INFO] class Creator ( public implements Serializable )

  ###### Atributos ###### 

    private String _name
    private List<Work> _works

  ###### Métodos ###### 

    public void addCreator(String name)
    public void addWork(Work work)
    public void removeWork(Work work, List _works)
    public List<Work> getWorks()
    public String getName()

 [WriteClassStructure]
[INFO] class Notification ( public implements Serializable )

  ###### Atributos ###### 

    private String _message

  ###### Métodos ###### 

    public String toString()

 [WriteClassStructure]
[INFO] class Date ( public implements Serializable )

  ###### Atributos ###### 

    public int _currentDate

  ###### Métodos ###### 

    public int getCurrentDate()
    public void advanceDate(int nDays)

 [WriteClassStructure]
[INFO] class Dvd ( public )
  extends Work

  ###### Atributos ###### 

    private String _igac
    private Creator _creator
    private String _dvdDescription
    private String _type

  ###### Métodos ###### 

    public String getDescription()
    public String toString()

 [WriteClassStructure]
[INFO] class Book ( public )
  extends Work

  ###### Atributos ###### 

    private String _isbn
    private List<Creator> _creators
    private String _bookDescription
    private String _type

  ###### Métodos ###### 

    public String setDescription()
    public String toString()

 [WriteClassStructure]
[INFO] class MyParser (  implements Serializable )

  ###### Atributos ###### 

    private Library _library

  ###### Métodos ###### 

    void parseFile(String filename)
    private void parseLine(String line)
    private void parseUser(String components, String line)
    private void parseDvd(String components, String line)
    private void parseBook(String components, String line)

 [WriteClassStructure]
[INFO]  abstract class Work ( public implements Serializable )

  ###### Atributos ###### 

    private int _id
    private int _price
    private int _numberOfCopies
    private int _availableCopies
    private String _title
    private Category _category

  ###### Métodos ###### 

    public void changeWorkInventory(int numberOfCopies)
    public abstract String toString()
    public int getId()
    public int getPrice()
    public int getNumberOfCopies()
    public int getAvailableCopies()
    public String getTitle()
    public Category getCategory()
    public void setCategory(Category category)

  ###### Subclasses  ###### 
    Dvd   Book   

   Method toString() overriden in subclass(es) Dvd Book 
 [WriteClassStructure]
[INFO] class LibraryManager ( public implements Serializable )

  ###### Atributos ###### 

    private Library _library
    private boolean _changed
    private String _filename

  ###### Métodos ###### 

    public int createUser(String userName, String userEmail)
    public void changeWorkInventory(int workId, int numberOfCopies)
    public User getUser(int userId)
    public List<User> getUsers()
    public Work getWork(int workId)
    public List<Work> getWorks()
    public Library getLibrary()
    public String getFileName()
    public Date getCurrentDate()
    public void advanceDate(int nDays)
    public void save()
    public void saveAs(String filename)
    public void load(String filename)
    public void importFile(String datafile)

 [WriteClassStructure]
[INFO] class Library ( public implements Serializable )

  ###### Atributos ###### 

    private static int _nextUserId
    private static int _nextWorkId
    private List<User> _users
    private List<Work> _works
    private List<Creator> _creators
    private boolean _modified
    private Date _currentDate
    private String _name

  ###### Métodos ###### 

    public User createUser(String userName, String userEmail)
    public Book registerBook(int price, int numberOfCopies, String title, List creators, Category category, String isbn)
    public Dvd registerDvd(int price, int numberOfCopies, String title, Creator creator, Category category, String igac)
    public boolean isCreatorAlreadyPresent(Creator creator, List list)
    public Creator createCreator(String creatorName)
    public void advanceDate(int nDays)
    public void changeWorkInventory(int workId, int numberOfCopies)
    public User getUser(int userId)
    public List<User> getUsers()
    public int getCurrentDate()
    public Work getWork(int workId)
    public List<Work> getWorks()
    public List<Work> getWorksByCreator(String creatorName)
    public Creator getCreator(String name)
    void importFile(String filename)

 [WriteClassStructure]
[INFO]  abstract class Rule ( public implements Serializable )

  ###### Atributos ###### 

    private int _id

  ###### Métodos ###### 

    public abstract void check(Work work, User user)

 [WriteClassStructure]
Auditoria completa.
