Skip to main content

A tool to measure code competency levels based on CEFR model

Project description

pycefrl

Identifying Python3 Code Level Using the CERFL Framework as Inspiration

What is this project about?

The goal of pycefrl is to create a tool capable of obtaining an evaluation inspired by the ''Common European Framework of Reference for Languages'' for code written in the Python programming language, version 3.

With this tool it is possible to analyze the level of GitHub repositories (and their developers) or code snippets in Python3.

ABSTRACT

Python is known to be a versatile language, well suited both for beginners and advanced users. Some elements of the language are easier to understand than others: some are found in any kind of code, while some others are used only by experienced programmers. The use of these elements lead to different ways to code, depending on the experience with the language and the knowledge of its elements, the general programming competence and programming skills, etc. In this paper, we present pycefr, a tool that detects the use of the different elements of the Python language, effectively measuring the level of Python proficiency required to comprehend and deal with a fragment of Python code. Following the well-known Common European Framework of Reference for Languages (CEFR), widely used for natural languages, pycefr categorizes Python code in six levels, depending on the proficiency required to create and understand it. We also discuss different use cases for pycefr: identifying code snippets that can be understood by developers with a certain proficiency, labeling code examples in online resources such as Stackoverflow and GitHub to suit them to a certain level of competency, helping in the onboarding process of new developers in Open Source Software projects, etc

Usage

  1. Prepare the files as follows
Root folder of your project
└───projects
|   ├───sample directory
|
└───jupyter notebook
└───results

Current API

from pycefr import pycerfl

pycerfl.read_Directory('projects/sample directory', 'sample directory')

It should create a results folder with two files

  • d.csv
  • d.json

Citation

If you use pycefr in your research or wish to refer to the examples in this repo, please cite with:

@inproceedings{RoblesICPC22,
author = {Robles, Gregorio and Kula, Raula Gaikovina and Ragkhitwetsagul, Chaiyong and Sakulniwat, Tattiya and Matsumoto, Kenichi and Gonzalez-Barahona, Jesus M.},
title = {Pycefr: Python Competency Level through Code Analysis},
year = {2022},
isbn = {9781450392983},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3524610.3527878},
doi = {10.1145/3524610.3527878},
booktitle = {Proceedings of the 30th IEEE/ACM International Conference on Program Comprehension},
pages = {173–177},
numpages = {5},
location = {Virtual Event},
series = {ICPC '22}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycefr-1.0.1.tar.gz (15.4 kB view details)

Uploaded Source

File details

Details for the file pycefr-1.0.1.tar.gz.

File metadata

  • Download URL: pycefr-1.0.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for pycefr-1.0.1.tar.gz
Algorithm Hash digest
SHA256 73c9c8fa983f601b14ab41ccb0cdf05105b70ff0f2644759575401363f3ec380
MD5 eaf57d45bca8f6f38a7637c3314cca8d
BLAKE2b-256 d16685d4811fb866ba571037341b30d28aabeca0557dac31de443f7aac05b0dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page